wordpress add_action(‘save_post’, ‘my_function) ne fonctionne pas
J’essaie de déclencher un événement lors de l’enregistrement/de la mise à jour d’un message dans wordpress… voir ici :
add_action('save_post', 'generate_location');
function generate_location($post_id) {
echo "hey";
}
le problème est que cela ne fonctionne pas… des idées pourquoi? Syntaxe?
Solution n°1 trouvée
Je ne sais pas si cela fonctionne, mais j’avais le même problème et j’ai découvert comment le résoudre !
dans wp-includes/post.php sur la ligne 2940 (au moment de la rédaction), ce if/else est exécuté lors de l’enregistrement d’un message :
if ( !empty($page_template) && 'page' == $data['post_type'] ) {
Vous remarquerez que, s’il y a une erreur avec le modèle, la fonction s’arrête là et save_post n’est jamais appelée.
Dans mon cas, les messages que j’essayais d’enregistrer ont été importés d’un site préexistant. Le nouveau site n’avait aucun modèle de page du tout, donc WP essayait toujours de sauvegarder la page avec le modèle d’avant, échouant, et donc; save_post n’a jamais été appelé.
J’ai ajouté
/* Template Name: Default Template */
à page.php, édition en bloc, sélectionné le modèle et enregistré. Supprimez le nom du modèle de page.php (car il apparaît deux fois (, et maintenant save_post est déclenché à chaque fois.
C’était la solution dans mon cas en tout cas. Je suis sûr que cela affectera quelqu’un d’autre, quelque part sur la ligne.
Solution n°2 trouvée
WordPress implémente le modèle Post/Redirect/Get pour éviter les soumissions de formulaires en double, de sorte que vous ne verrez rien echo
d’un save_post
rappel.
Au lieu de cela, vous pouvez faire un à la wp_die( 'hey' )
place, ou enregistrer quelque chose dans la base de données ou le système de fichiers.
0 commentaire