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).
- Ensuite, il y a 2 autres crochets de transition tirés, mais ils sont nommés de manière dynamique, cela signifie que l'action effective déclenchée dépend de l'ancien et du nouveau statut du post.
"{$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)
- Un autre crochet dynamique:
"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.
- Enfin vous avez '
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
ou wp_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 ajouter 3
comme $accepted_args
param sur add_action
( voir docs ):
// if you don't add 3 as as 4th argument, this will not work as expected
add_action( 'save_post', 'my_save_post_function', 10, 3 );
function my_save_post_function( $post_ID, $post, $update ) {
$msg = 'Is this un update? ';
$msg .= $update ? 'Yes.' : 'No.';
wp_die( $msg );
}
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:
wp_update_post( $post );
add_action( 'save_post', 'my_function', 10, 3 );
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.
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.