Je suis surpris par le fait que ma fonction que j'ai clouée sur l' save_post
action se déclenche lorsque je clique sur le lien "Nouveau message" dans le tableau de bord d'administration. Remarque - c'est avant d'avoir appuyé sur Saveou Update, et il se déclenche immédiatement, pas après un temps écoulé ou une mise à jour automatique.
D'autre part, quand je puis tapez quelque chose et appuyez sur la Publishou Updateou des Save Draftboutons, la déclaration d'écho , je l' ai mis dans mon gestionnaire d'action n'a pas d' écho, donc il semble que l'action ne se déclenche pas à tout autre moment. Cela peut être indépendant.
Voici mon code:
add_action('save_post', 'MyNS\save_event_metabox', 10, 2);
function save_event_metabox($post_id, $post){
echo "<h1>YES!</h1>";
}
Cet OUI fait écho (en haut de la page) lorsque j'appuie sur le lien "Nouveau message" mais ne résonne PAS lorsque je tape quelque chose et que j'appuie sur Updateou Publishou Save Draft. Cela semble contredire la documentation sur l' save_post
action et la wp_insert_post()
fonction.
Quelqu'un peut-il clarifier cela pour moi?
Réponses:
Lorsque vous cliquez sur «Nouveau message», vous chargez simplement la page
wp-admin/post-new.php
.Ce faisant, WordPress toujours créer un nouveau poste (un « Auto Projet ») pour assurer que toutes les autres fonctionnalités (telles que les téléchargements de médias) et le travail des plugins comme d' habitude, avant même que vous fait enregistrer un brouillon ou publier le poste.
Et cela, à son tour, déclenche
save_post
. D'où ton écho.Entre l'enregistrement et le chargement de la page suivante, WordPress envoie en fait une
GET
redirection vers la même page, qui semble transparente (vous pouvez en témoigner avec un moniteur HTTP, tel que HttpFox ).En d'autres termes;
Update
ouPublish
save_post
La redirection peut sembler inutile (car vous pouvez simplement accéder
POST
à la même page), mais elle fait partie d'une technique connue sous le nom de Post / Redirect / Get pour éviter les soumissions de formulaires en double .Si vous essayez d'imprimer des messages personnalisés en fonction du résultat d'une fonction accrochée
save_post
, consultez ces questions / réponses .* Pas strictement vrai, votre écho se produira en fait avant que l'en-tête de redirection ne soit envoyé, mais le navigateur le supprimera ou les choses se produisent si rapidement qu'il ne s'affiche jamais.
la source