do_action WordPress example : guide complet
Sommaire de l'article
Introduction
Dans l’écosystème WordPress, les hooks (actions et filtres) sont au cœur de la personnalisation du CMS et de l’extension de ses fonctionnalités. Parmi eux, la fonction do_action est l’un des outils les plus importants pour les développeurs de thèmes et de plugins : elle permet de déclencher un hook d’action à un endroit précis du code afin d’exécuter toutes les fonctions qui y sont rattachées.
Cet article détaillé vous explique ce qu’est do_action, comment elle fonctionne dans le cœur de WordPress, comment créer vos propres hooks personnalisés, et comment l’utiliser efficacement dans vos projets pour garder un code propre, extensible et performant.
Rappels sur les hooks WordPress
Actions et filtres : la base du système d’extensions
Les hooks WordPress sont des points d’ancrage dans l’exécution du CMS où vous pouvez injecter ou modifier du comportement sans toucher au noyau. On distingue deux grands types de hooks :
- Actions (action hooks) : elles permettent d’exécuter du code à un moment donné du cycle de vie de WordPress (chargement du cœur, affichage du head HTML, enregistrement d’un article, connexion d’un utilisateur, etc.). Par exemple, le hook
wp_headest déclenché dans la balisede la page, et de nombreux thèmes et plugins y ajoutent des scripts, feuilles de style ou balises meta. - Filtres (filter hooks) : ils servent à modifier des données (texte, HTML, variables PHP, tableaux de configuration) avant qu’elles ne soient utilisées ou affichées. Un filtre reçoit généralement une valeur en entrée, la modifie et doit retourner cette valeur transformée.
La fonction do_action concerne exclusivement les hooks d’action. Elle ne renvoie aucune valeur significative et se contente de lancer toutes les fonctions enregistrées sur un hook donné.
Comprendre la fonction do_action
Définition générale
La fonction do_action est une fonction native du cœur de WordPress. Elle sert à déclencher un hook d’action (existant ou personnalisé) et à exécuter toutes les fonctions qui ontété associées à ce hook via add_action. Tant qu’aucune fonction n’est attachée à ce hook, l’appel à do_action ne produira tout simplement aucun effet visible.
Signature officielle
La signature officielle de do_action dans WordPress est la suivante :
do_action( string $hook_name, mixed ...$arg );
- $hook_name (ou parfois $tag) : chaîne de caractères obligatoire, il s’agit du nom du hook d’action à déclencher (par exemple
'wp_head','init','my_custom_action'…). - ...$arg : liste d’arguments optionnels (0, 1 ou plusieurs). Ce sont des valeurs qui seront transmises aux fonctions callback attachées à ce hook via
add_action.
Les arguments supplémentaires sont donc optionnels : vous pouvez tout à fait appeler do_action( 'mon_hook' ); sans passer d’arguments.
Valeur de retour de do_action
Un point fondamental : la fonction do_action ne retourne rien d’utile. Sa valeur de retour est null. Elle se contente d’exécuter les callbacks associées au hook et de terminer son travail. Si vous avez besoin de récupérer une valeur transformée, il faut utiliser un filtre (via apply_filters), pas une action.
Fonctionnement interne simplifié
De manière simplifiée, on peut décrire le fonctionnement de do_action comme suit :
- Enregistrer une nouvelle exécution du hook (compteur interne).
- Exécuteréventuellement les callbacks enregistrées sur le hook spécial
all, qui s’appliquent à tous les hooks d’action. - Vérifier si des fonctions ontété enregistrées sur le hook
$hook_nameviaadd_action. - Préparer le tableau d’arguments transmis (avec quelques ajustements pour la rétrocompatibilité).
- Appeler successivement toutes les callbacks associées à ce hook, en leur passant les arguments prévus.
Si aucune fonction n’est liée au hook $hook_name, l’appel à do_action( $hook_name ) se termine rapidement sans rien exécuter.
Exemples de base avec do_action
Exemple minimal sans argument
Voici un exemple minimaliste d’utilisation de do_action avec un hook personnalisé ne recevant aucun argument :
Action personnalisée exécutée.';
} // 2. Attacher la fonction à un hook personnalisé.
add_action( 'mon_hook_simple', 'mon_hook_simple_callback' ); // 3. Déclencher le hook à l’endroit voulu dans le code.
do_action( 'mon_hook_simple' );
Dans cet exemple, 'mon_hook_simple' est le nom du hook d’action. Lorsque do_action( 'mon_hook_simple' ) est exécutée, WordPress va appeler mon_hook_simple_callback. S’il n’y avait aucune fonction attachée à ce hook, l’appel à do_action ne ferait rien.
Exemple avec arguments
Passons maintenant à un exemple où l’on transmet des arguments aux callbacks via do_action. Supposons que l’on souhaite déclencher une action en passant un nom d’utilisateur et un message :
' . esc_html( $nom_utilisateur ) . ' : ' . esc_html( $message ) . '';
} // 2. Attacher la fonction à un hook personnalisé.
// Le 4e paramètre (2) indique que la callback acceptera 2 arguments.
add_action( 'mon_hook_message', 'afficher_message_personnalise', 10, 2 ); // 3. Déclencher l’action avec 2 arguments.
$utilisateur = 'Alice';
$message = 'Bienvenue sur notre site WordPress !'; do_action( 'mon_hook_message', $utilisateur, $message );
Dans cet exemple :
'mon_hook_message'est le nom du hook d’action.$utilisateuret$messagesont passés en arguments viado_action.add_action( 'mon_hook_message', 'afficher_message_personnalise', 10, 2 );précise que la callback accepte 2 arguments.
Les callbacks doivent déclarer et accepter un nombre d’arguments cohérent avec le paramètre $accepted_args fourni dans add_action. Si vous déclarez 2 ici, la fonction recevra au maximum 2 arguments, même si do_action en fournit davantage.
Créer un hook personnalisé avec do_action
Principe général
Créer un hook d’action personnalisé revient simplement à choisir un nom de hook et à l’utiliser dans un appel à do_action. N’importe quel développeur de thème ou de plugin pourra ensuite brancher ses propres fonctions sur ce hook via add_action.
Exemple complet : hook d’action personnalisé pour un message de bienvenue
L’article d’origine mentionnait l’idée d’afficher un message personnalisé lorsqu’un utilisateur se connecte, avec un hook nommé user_logged_in. Pour rester cohérent avec le fonctionnement réel de WordPress, on va ici illustrer la même idée avec un hook personnalisé déclenché après un traitement de connexion dans un plugin ou un thème.
Bienvenue ' . esc_html( $utilisateur->display_name ) . ' !'; }
} /** * 3. Attacher la fonction au hook personnalisé. * On précise 1 pour $accepted_args car la callback reçoit 1 argument : $user_id. */
add_action( 'mon_plugin_apres_connexion', 'mon_message_bienvenue', 10, 1 );
Dans ce scénario :
mon_plugin_apres_connexiondéclenche le hook'mon_plugin_apres_connexion'avec l’identifiant utilisateur$user_id.mon_message_bienvenueest exécutée automatiquement lorsqu’on appelledo_action( 'mon_plugin_apres_connexion', $user_id ).- Tout autre développeur peut lui aussi se brancher sur ce hook pour réagir à la connexion (envoyer un email, enregistrer un log, déclencher une notification, etc.).
do_action et hooks du cœur WordPress
Exemples de hooks d’action natifs
Le cœur de WordPress utilise do_action à de nombreux endroits pour offrir des points d’extension standardisés. Parmi les hooks les plus courants, on trouve notamment :
init: déclenché une fois WordPress chargé mais avant l’envoi de tout contenu. Il sert souvent à enregistrer des custom post types, taxonomies, scripts, etc.wp_head: exécuté dans la balisedu front-office, idéal pour injecter des balises meta, des scripts ou des feuilles de style supplémentaires.wp_footer: déclenché juste avant la fermeture de la balise
Articles similaires
Besoin d'aide avec votre SEO ?
Notreéquipe d'experts peut vous aider à optimiser votre site e-commerce