WordPress annonce en permanence, tout au long de son exécution, qu’il vient d’atteindre telle ou telle étape : un utilisateur vient de se connecter, un article vient d’être enregistré, le pied de page va bientôt s’afficher. Ces annonces s’appellent des actions, déclenchées par la fonction do_action() à des endroits stratégiques du cœur, des thèmes et des extensions. N’importe quel code peut alors s’y « accrocher » avec add_action() pour exécuter sa propre fonction à ce moment précis.
Fonctionnement dans WordPress
Contrairement à un filtre, une action ne reçoit pas nécessairement de valeur à retourner : elle sert à déclencher un effet de bord (envoyer un e-mail, écrire un journal, enregistrer une donnée), pas à transformer une valeur existante. Des actions comme init, wp_enqueue_scripts ou save_post sont parmi les plus utilisées pour respectivement initialiser des réglages, charger des scripts et styles, ou réagir à l’enregistrement d’un contenu.
Exemple
add_action( 'save_post', function( $post_id ) {
if ( get_post_type( $post_id ) === 'produit' ) {
do_action( 'mon_plugin/produit_enregistre', $post_id );
}
} );
À ne pas confondre avec
- Le filtre, qui transforme et retourne obligatoirement une valeur (comme le titre d’un article), alors que l’action se contente d’exécuter du code sans obligation de retour.
- Le crochet d’activation (
register_activation_hook()), qui ne se déclenche qu’une seule fois, à l’activation de l’extension, et non à chaque exécution normale du site comme la plupart des actions courantes. - L’ordre d’exécution de plusieurs fonctions accrochées à la même action dépend de leur priorité (troisième argument de
add_action()), et non de l’ordre de déclaration dans le code, un piège classique pour qui débute.