Tengo un archivo personalizado llamado xxxx_url. xxxx_urlDebería ser único.
Entonces, antes de publicar la publicación, ¿quiero asegurarme de que xxxx_urlsea ú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_urldónde132está 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_postacció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_metao no. Supongo que podría también comprobar el campo personalizado y si no tiene un valor único, establecer elpost-statusadrafto 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_postla 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_contentestá 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_contentpara expresar eso, pero por lo demás está exactamente en el lugar correcto.wp_insert_post_empty_contentfiltro?¿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']espublishy el usuario lo está actualizando? ¿Hacer la publicación comodraftcrear un404problema 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_urlvalor o no.fuente
wp_insert_postacció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.