Al principio de wp_insert_post
la función que guarda / actualiza una publicación, hay un filtro llamado wp_insert_post_empty_content
. Por defecto, este filtro verifica si los campos de título, editor y extracto están vacíos, en cuyo caso el proceso de guardar se detendrá.
Sin embargo, dado que todos los campos que se guardarán se pasan a este filtro, puede expandir este filtro para incluir cualquier otra prueba para determinar si la publicación debe considerarse vacía. Sería algo como esto:
add_filter ('wp_insert_post_empty_content','wpse312975_check_unique_url',10,2);
function wpse312975_check_unique_url ($maybe_empty, $postarr) {
// extract custom field from $postarr, check uniqueness
if ($unique) return false else return true;
}
Nota: la función debe devolver 'verdadero' para detener el proceso de guardado.
Si el campo personalizado no es único, también puede hacer eco de una advertencia.
132_url
dónde132
está el ID de la publicación. Que siempre tiene un valor único aquí. Además de eso: los campos personalizados se deben guardar en lasave_post
acción. En esta acción, puede verificar el campo personalizado (si no está vacío y tiene un valor único, por ejemplo), y según estoupdate_post_meta
o no. Supongo que podría también comprobar el campo personalizado y si no tiene un valor único, establecer elpost-status
adraft
o alguna otra cosa, a la publicación de bloqueo. De lo contrario, creo que necesitas jQuery para hacer esto.