j'essaye de crocheter quand le post est mis à jour mais tout le crochet j'essaye jamais exécuté sauf updated_post_meta
add_action('updated_post_meta', 'my_function');
function my_function($post_id) {
echo 'This is my post ID : '.$post_id;
}
J'ai essayé cela, add_action('save_post', 'my_function');
mais aucun identifiant n'a été renvoyé, ou peut-être que ce message a déjà un écho mais ne s'affiche jamais en raison de l'en-tête de redirection envoyé.
save_post
, est-ce une faute de frappe ici, ou était-ce dans votre code d'origine? activez également le débogage pendant le développement.Réponses:
Lorsqu'un article est mis à jour, certains hooks sont déclenchés:
'pre_post_update'
est une action déclenchée juste avant la mise à jour de la publication, l'argument passé est 2:$post_ID
et$data
c'est un tableau de toutes les autres colonnes de la base de données de la table de publication'transition_post_status'
est un hook déclenché lors de la mise à jour et passe 3 arguments: $ new_post_status$old_post_status
et$post
(object)."{$old_status}_to_{$new_status}"
et"{$new_status}_{$post->post_type}"
. Passez d'abord le seul objet post en argument, le second passez l'id post et l'objet post. Trouvez la documentation ici .'edit_post'
qui passent 2 arguments:$post_ID
et$post
(objet)'post_updated'
qui passe de 3 arguments:$post_ID
,$post_after
(object poste après la mise à jour),$post_before
(objet poste avant la mise à jour)"save_post_{$post->post_type}"
qui dépend du type poste, par exemple pour les postes standards est'save_post_post'
et pour les pages est'save_post_page'
, ce passage 3 arguments crochet:$post_ID
,$post
(objet) et$update
qui est un booléen qui est vrai lorsque vous (vrai ou faux) d' effectuer une mise à jour, en En fait, ce crochet est également déclenché lorsqu'un message est enregistré pour la première fois.save_post
' qui est déclenché à la fois lors de la mise à jour et lors de la première sauvegarde, et transmet les 3 mêmes arguments du hook précédent.save_post_{$post_type}
' qui est déclenché à la fois lors de la mise à jour et lors de la première sauvegarde, et transmet les mêmes 2 premiers arguments du hook précédent.wp_insert_post
' , qui est déclenché à la fois lors de la mise à jour et lors de la première sauvegarde, et passez les 3 mêmes arguments des 2 hooks précédents.Ces hooks sont tirés à chaque fois qu'une publication est mise à jour, à la fois via les pages d'administration dans le backend et via une mise à jour "manuelle" à l'aide des fonctions
wp_update_post
ouwp_insert_post
.Lorsque le message est mis à jour à l'aide des pages d'administration, des hooks supplémentaires sont déclenchés, un exemple est
'update_post_redirect'
ou'post_updated_messages'
. (Voir ceci et ces réponses WPSE pour des exemples d'utilisation).Notez que si vous voulez utiliser un argument hooks, ce n'est pas le premier, vous devez le déclarer explicitement dans l'
add_action
appel.Par exemple , si vous voulez utiliser l'
'$update'
argument (qui est le 3e) du'save_post'
crochet , vous devez ajouter3
comme$accepted_args
param suradd_action
( voir docs ):Dernière remarque concernant le timing : vous devez être sûr qu'il
add_action
est appelé avant le déclenchement de l'action, sinon il ne fera rien.Par exemple ce code:
ne fera rien, car l'action est ajoutée après le tir du crochet. Voici simple à reconnaître, dans le code du monde réel n'est pas toujours le cas.
la source
function save_post_test( $post_id, $post, $update ) { print ' post_id : '; var_export( $post_id ); print ' post : '; var_export( $post ); print ' update : '; var_export( $update ); wp_die( 'save_post hook runs when you click Add New..' ); } add_action( 'save_post', 'save_post_test', 10, 3 );
Pourquoi l'action «save_post» s'exécute-t-elle sur Ajouter nouveau au lieu de Publier? Pour faire le post automatique, je suppose.Pourquoi ne pas vous connecter
post_updated_messages
. De cette façon, vous pouvez afficher ce message comme le post wordpress par défaut mis à jour.Cherchez un exemple ici:
http://codex.wordpress.org/Function_Reference/register_post_type
en dessous de
post_updated_messages
la source