Tengo un archivo personalizado llamado xxxx_url
. xxxx_url
Debería ser único.
Entonces, antes de publicar la publicación, ¿quiero asegurarme de que xxxx_url
sea única o no? Si no es único, la publicación de la publicación debe ser rechazada.
Probé publish_post
. Pero esa no es la correcta, ya que se activa cuando publicamos la publicación. Quiero ejecutar mi código justo antes de la publicación.
custom-field
filters
hooks
actions
Soy la persona mas estupida
fuente
fuente
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.Respuestas:
Al principio de
wp_insert_post
la función que guarda / actualiza una publicación, hay un filtro llamadowp_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:
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.
fuente
wp_insert_post_empty_content
está semánticamente destinado a contenido vacío . Dicho esto, tampoco encontré ningún gancho que sea semánticamente adecuado para esto.wp_insert_post_valid_content
para expresar eso, pero por lo demás está exactamente en el lugar correcto.wp_insert_post_empty_content
filtro?¿Qué tal usar AJAX para verificar la unicidad antes de enviar la publicación para su publicación?
Aunque el código no se ha probado, debería funcionar. Es posible que deba jugar con él para obtener el resultado deseado.
fuente
Me conectaría al filtro wp_insert_post_data y manejaría esto de la manera menos intrusiva posible porque, según tengo entendido, no quieres bloquear la inserción de una publicación, solo debes evitar publicar una publicación con meta valores duplicados.
No puedo ahorrar demasiado en este caso porque no compartiste ningún código, pero aquí hay un pseudocódigo de un filtro que funcionaría:
Otra gran cosa sobre este filtro es que está separado de los archivos adjuntos
wp_insert_attachment_data
.Espero que ayude, y hagas lo que hagas, ¡suena increíble!
fuente
$data['post_status']
espublish
y el usuario lo está actualizando? ¿Hacer la publicación comodraft
crear un404
problema para esa publicación?El cheque debe ir a
wp_insert_post
. Este gancho se activa cada vez que se publica o edita una publicación.Allí, puede hacer una consulta personalizada para verificar, si hay alguna publicación que ya tenga el mismo
xxxx_url
valor o no.fuente
wp_insert_post
acción se dispara una vez que se ha guardado una publicación, no puede bloquear la publicación o inserción de publicaciones.If it isn't unique it should reject publishing post.
en mi pregunta.