Me sorprende el hecho de que mi función que he agregado a la save_post
acción se activa cuando hago clic en el enlace "Nueva publicación" en el Panel de administración. Nota: esto es antes de presionar Saveo Update, y se dispara inmediatamente, no después de un tiempo transcurrido o una actualización automática.
Por otro lado, cuando el entonces escribo en algo y pulse el Publisho Updateo Save Draftbotones, que la orden echo he puesto en mi gestor de acción no hace eco a cabo, por lo que parece que la acción no está disparando en cualquier otro momento. Esto puede no estar relacionado.
Aquí está mi código:
add_action('save_post', 'MyNS\save_event_metabox', 10, 2);
function save_event_metabox($post_id, $post){
echo "<h1>YES!</h1>";
}
Este SÍ se repite (en la parte superior de la página) cuando presiono el enlace "Nueva publicación" pero NO se repite cuando escribo algo y luego presiono Updateo Publisho Save Draft. Esto parece contradecir la documentación sobre la save_post
acción y la wp_insert_post()
función.
¿Alguien puede aclarar esto para mí?
Respuestas:
Cuando haces clic en 'Nueva publicación', simplemente estás cargando la página
wp-admin/post-new.php
.De este modo, WordPress siempre va a crear un nuevo puesto (un 'Proyecto de Auto') para asegurar todas las demás características (tales como archivos de medios de comunicación) y el trabajo plugins como normal, incluso antes de que en realidad guardar un borrador o publicar el mensaje.
Y esto, a su vez, desencadena
save_post
. De ahí tu eco.Entre el guardado y la carga de la página siguiente, WordPress en realidad está enviando una
GET
redirección a la misma página, que parece transparente (puede presenciar esto con un monitor HTTP, como HttpFox ).En otras palabras;
Update
oPublish
save_post
La redirección puede parecer innecesaria (ya que podría dirigirse
POST
a la misma página), pero es parte de una técnica conocida como Post / Redirect / Get para evitar envíos de formularios duplicados .Si está intentando imprimir mensajes personalizados basados en el resultado de una función conectada
save_post
, consulte estas preguntas / respuestas .* No es estrictamente cierto, su eco de hecho ocurrirá antes de que se envíe el encabezado de redireccionamiento, pero el navegador lo descartará o las cosas sucederán tan rápido que nunca se procesará.
fuente