Hooks d’action couramment utilisés lors du développement de plugins

logo rond@4x

https://developer.wordpress.org/reference/hooks/

<?php
/**
* Nom du plugin : votre plugin de fonctionnalités personnalisées
* Description : Brève description de votre plugin ici.
* Auteur : votre nom ici
* Licence : GNU General Public License v3 ou version ultérieure
* URI de licence : http://www.gnu.org/licenses/gpl-3.0.html
*/

// Sécurité de base, empêche le chargement direct du fichier.
defined( 'ABSPATH' ) or die( 'Cheatin&#8217; uh?' );

/* Préfixez vos fonctions personnalisées !
*
* Les noms de fonctions doivent être uniques en PHP.
* Afin de vous assurer que le nom de votre fonction ne
* existent ailleurs dans WordPress, ou dans d'autres plugins,
* donnez à votre fonction un préfixe personnalisé unique.
* Exemple de préfixe : wpr20151231
* Exemple de nom de fonction : wpr20151231__do_something
*
* Pour le reste du nom de votre fonction après le préfixe,
* assurez-vous qu'il soit aussi bref et descriptif que possible.
* En cas de doute, ne craignez pas un nom de fonction plus long s'il
* va vous rappeler immédiatement ce que fait la fonction.
* Imaginez que vous lirez votre propre code dans quelques années, alors
* traitez votre futur moi avec une dénomination descriptive. ;)
*/

/**
* Transmettez votre fonction personnalisée au hook d'action wp_rocket_loaded.
*
* Remarque : wp_rocket_loaded lui-même est connecté à celui de WordPress.
* Crochet plugins_loaded.
* En fonction du type de fonctionnalité de votre plugin personnalisé
* devrait implémenter, vous pouvez/devriez connecter votre (vos) fonction(s) à
* différents crochets d'action, comme par exemple
* init, after_setup_theme ou template_redirect.
*
* Apprenez-en plus sur les actions et les filtres WordPress ici :
* https://developer.wordpress.org/plugins/hooks/
*
* @param string 'wp_rocket_loaded' Nom du hook dans lequel accrocher la fonction
* @param string 'yourprefix__do_something' Nom de la fonction à accrocher
*/
add_action( 'wp_rocket_loaded', 'yourprefix__do_something' );

/**
* Définissez ici votre fonction personnalisée.
* Cet exemple renvoie simplement vrai.
*
* @return bool Valeur booléenne VRAI
*/
function yourprefix__do_something() {
	return true;
}

Hooks d’action couramment utilisés lors du développement de plugins ou de thèmes WordPress, accompagnés de leurs définitions :

  1. init : Utilisé pour initialiser des fonctionnalités au chargement de WordPress.
  2. wp_loaded : Action déclenchée une fois que WordPress est complètement chargé.
  3. admin_init : Utilisé pour initialiser des fonctionnalités spécifiques à l’administration.
  4. save_post : Action déclenchée lorsqu’un article est enregistré ou mis à jour.
  5. wp_enqueue_scripts : Utilisé pour ajouter des scripts et des styles sur le frontend.
  6. wp_head : Action pour ajouter du contenu à la section <head> de la page.
  7. wp_footer : Action pour ajouter du contenu avant la fermeture du balisage <body>.
  8. template_redirect : Utilisé pour effectuer des redirections avant que la page ne soit rendue.
  9. admin_menu : Action déclenchée lors de la création du menu d’administration.
  10. admin_enqueue_scripts : Utilisé pour ajouter des scripts et des styles dans l’administration.
  11. plugins_loaded : Action déclenchée après que tous les plugins ont été chargés.
  12. after_setup_theme : Utilisé pour configurer les fonctionnalités après le chargement du thème.
  13. widgets_init : Action pour initialiser les widgets.
  14. wp_login : Action déclenchée lorsqu’un utilisateur se connecte.
  15. wp_logout : Action déclenchée lorsqu’un utilisateur se déconnecte.
  16. pre_get_posts : Utilisé pour modifier la requête principale avant l’exécution.
  17. wp_insert_post : Action déclenchée après l’insertion ou la mise à jour d’un article.
  18. wp_update_nav_menu : Utilisé pour effectuer des actions lors de la mise à jour des menus de navigation.
  19. transition_post_status : Action déclenchée lors du changement de statut d’un article.
  20. delete_post : Action déclenchée lorsqu’un article est supprimé.
  21. admin_notices : Utilisé pour afficher des messages d’administration.
  22. admin_post : Action déclenchée pour les requêtes POST dans l’administration.
  23. pre_delete_post : Utilisé avant la suppression d’un article.
  24. wp_dashboard_setup : Action pour personnaliser le tableau de bord.
  25. add_meta_boxes : Utilisé pour ajouter des boîtes de méta-données à l’écran d’édition.
  26. save_post_{$post_type} : Action déclenchée lors de l’enregistrement d’un type d’article spécifique.
  27. pre_get_posts : Utilisé pour modifier la requête principale avant l’exécution.
  28. comment_post : Action déclenchée lorsqu’un commentaire est enregistré.
  29. wp_ajax_{action} : Action déclenchée pour les requêtes AJAX.
  30. wp_ajax_nopriv_{action} : Action déclenchée pour les requêtes AJAX des utilisateurs non connectés.
  31. wp_insert_comment : Action déclenchée après l’insertion ou la mise à jour d’un commentaire.
  32. edit_comment : Action déclenchée lors de l’édition d’un commentaire.
  33. delete_comment : Action déclenchée lors de la suppression d’un commentaire.
  34. wp_ajax_delete_comment : Action déclenchée pour la suppression d’un commentaire via AJAX.
  35. deleted_comment : Action déclenchée après la suppression d’un commentaire.
  36. delete_post : Action déclenchée avant la suppression d’un article.
  37. before_delete_post : Utilisé avant la suppression d’un article.
  38. deleted_post : Action déclenchée après la suppression d’un article.
  39. before_delete_user : Action déclenchée avant la suppression d’un utilisateur.
  40. delete_user : Action déclenchée lors de la suppression d’un utilisateur.
  41. profile_update : Action déclenchée lors de la mise à jour du profil utilisateur.
  42. set_user_role : Action déclenchée lors du changement du rôle d’un utilisateur.
  43. add_attachment : Action déclenchée lors de l’ajout d’un fichier attaché.
  44. edit_attachment : Action déclenchée lors de l’édition d’un fichier attaché.
  45. delete_attachment : Action déclenchée lors de la suppression d’un fichier attaché.
  46. media_upload_{$tab} : Action déclenchée lors de l’affichage d’un onglet dans l’uploader multimédia.
  47. admin_init : Utilisé pour des initialisations spécifiques à l’administration.
  48. admin_menu : Action déclenchée lors de la création du menu d’administration.
  49. admin_notices : Utilisé pour afficher des messages d’administration.
  50. admin_print_scripts : Action déclenchée lors de l’impression des scripts dans l’administration.
  51. admin_print_styles : Action déclenchée lors de l’impression des styles dans l’administration.
  52. admin_bar_menu : Action déclenchée lors de la construction du menu de la barre d’administration.
  53. admin_footer : Action déclenchée dans le pied de page de l’administration.
  54. wp_before_admin_bar_render : Action déclenchée avant le rendu de la barre d’administration.
  55. admin_enqueue_scripts : Utilisé pour ajouter des scripts et des styles dans l’administration.
  56. wp_dashboard_setup : Action pour personnaliser le tableau de bord.
  57. login_init : Action déclenchée lors de l’initialisation de la page de connexion.
  58. login_form : Utilisé pour personnaliser le formulaire de connexion.
  59. authenticate : Action déclenchée lors de l’authentification d’un utilisateur.
  60. wp_logout : Action déclenchée lors de la déconnexion d’un utilisateur.
  61. check_admin_referer : Utilisé pour vérifier les nonces dans l’administration.
  62. check_passwords : Utilisé pour vérifier les mots de passe.
  63. admin_init : Utilisé pour des initialisations spécifiques à l’administration.
  64. admin_post : Action déclenchée pour les requêtes POST dans l’administration.
  65. admin_post_nopriv : Action déclenchée pour les requêtes POST non authentifiées dans l’administration.
  66. admin_footer : Action déclenchée dans le pied de page de l’administration.
  67. admin_footer-{$hook_suffix} : Action déclenchée dans le pied de page de l’administration pour un crochet spécifique.
  68. admin_head : Action déclenchée dans l’en-tête de l’administration.
  69. admin_head-{$hook_suffix} : Action déclenchée dans l’en-tête de l’administration pour un crochet spécifique.
  70. admin_menu : Action déclenchée lors de la création du menu d’administration.
  71. admin_notices : Utilisé pour afficher des messages d’administration.
  72. admin_notices-{$hook_suffix} : Utilisé pour afficher des messages d’administration pour un crochet spécifique.
  73. admin_print_footer_scripts : Action déclenchée lors de l’impression des scripts dans le pied de page de l’administration.
  74. admin_print_footer_scripts-{$hook_suffix} : Action déclenchée lors de l’impression des scripts dans le pied de page de l’administration pour un crochet spécifique.
  75. admin_print_scripts : Action déclenchée lors de l’impression des scripts dans l’administration.
  76. admin_print_scripts-{$hook_suffix} : Action déclenchée lors de l’impression des scripts dans l’administration pour un crochet spécifique.
  77. admin_print_styles : Action déclenchée lors de l’impression des styles dans l’administration.
  78. admin_print_styles-{$hook_suffix} : Action déclenchée lors de l’impression des styles dans l’administration pour un crochet spécifique.
  79. admin_enqueue_scripts : Utilisé pour ajouter des scripts et des styles dans l’administration.
  80. admin_enqueue_scripts-{$hook_suffix} : Utilisé pour ajouter des scripts et des styles dans l’administration pour un crochet spécifique.
  81. admin_enqueue_scripts : Utilisé pour ajouter des scripts et des styles dans l’administration.
  82. admin_enqueue_scripts-{$hook_suffix} : Utilisé pour ajouter des scripts et des styles dans l’administration pour un crochet spécifique.
  83. admin_enqueue_styles : Action déclenchée lors de l’ajout de styles dans l’administration.
  84. admin_enqueue_styles-{$hook_suffix} : Action déclenchée lors de l’ajout de styles dans l’administration pour un crochet spécifique.
  85. admin_footer_text : Utilisé pour personnaliser le texte dans le pied de page de l’administration.
  86. admin_footer_text-{$hook_suffix} : Utilisé pour personnaliser le texte dans le pied de page de l’administration pour un crochet spécifique.
  87. wp_ajax_{$action} : Action déclenchée pour les requêtes AJAX dans l’administration.
  88. wp_ajax_nopriv_{$action} : Action déclenchée pour les requêtes AJAX en dehors de l’administration.
  89. admin_action_{$action} : Action déclenchée pour les actions administratives personnalisées.
  90. admin_post_{$action} : Action déclenchée pour les requêtes POST dans l’administration.
  91. admin_head-{$hook_suffix} : Action déclenchée dans l’en-tête de l’administration pour un crochet spécifique.
  92. admin_head_{$content_func} : Action déclenchée dans l’en-tête de l’administration pour une fonction de contenu spécifique.
  93. admin_init : Utilisé pour des initialisations spécifiques à l’administration.
  94. admin_menu : Action déclenchée lors de la création du menu d’administration.
  95. admin_notices : Utilisé pour afficher des messages d’administration.
  96. admin_page_access_denied : Action déclenchée lorsque l’accès à une page d’administration est refusé.
  97. admin_post : Action déclenchée pour les requêtes POST dans l’administration.
  98. admin_post_nopriv : Action déclenchée pour les requêtes POST non authentifiées dans l’administration.
  99. admin_post_nopriv_{$action} : Action déclenchée pour les requêtes POST non authentifiées dans l’administration pour une action spécifique.
  100. admin_post_thumbnail_html : Utilisé pour personnaliser le code HTML de l’image à la une dans l’administration.
  101. admin_print_scripts : Action déclenchée lors de l’impression des scripts dans l’administration.
  102. admin_print_scripts-{$hook_suffix} : Action déclenchée lors de l’impression des scripts dans l’administration pour un crochet spécifique.
  103. admin_print_styles : Action déclenchée lors de l’impression des styles dans l’administration.
  104. admin_print_styles-{$hook_suffix} : Action déclenchée lors de l’impression des styles dans l’administration pour un crochet spécifique.
  105. admin_enqueue_scripts : Utilisé pour ajouter des scripts et des styles dans l’administration.
  106. admin_enqueue_scripts-{$hook_suffix} : Utilisé pour ajouter des scripts et des styles dans l’administration pour un crochet spécifique.
  107. admin_enqueue_scripts : Utilisé pour ajouter des scripts et des styles dans l’administration.
  108. admin_enqueue_scripts-{$hook_suffix} : Utilisé pour ajouter des scripts et des styles dans l’administration pour un crochet spécifique.
  109. admin_enqueue_styles : Action déclenchée lors de l’ajout de styles dans l’administration.
  110. admin_enqueue_styles-{$hook_suffix} : Action déclenchée lors de l’ajout de styles dans l’administration pour un crochet spécifique.
  111. admin_footer_text : Utilisé pour personnaliser le texte dans le pied de page de l’administration.
  112. admin_footer_text-{$hook_suffix} : Utilisé pour personnaliser le texte dans le pied de page de l’administration pour un crochet spécifique.
  113. wp_ajax_{$action} : Action déclenchée pour les requêtes AJAX dans l’administration.
  114. wp_ajax_nopriv_{$action} : Action déclenchée pour les requêtes AJAX en dehors de l’administration.
  115. admin_action_{$action} : Action déclenchée pour les actions administratives personnalisées.
  116. admin_post_{$action} : Action déclenchée pour les requêtes POST dans l’administration.
  117. admin_head-{$hook_suffix} : Action déclenchée dans l’en-tête de l’administration pour un crochet spécifique.
  118. admin_head_{$content_func} : Action déclenchée dans l’en-tête de l’administration pour une fonction de contenu spécifique.
  119. admin_init : Utilisé pour des initialisations spécifiques à l’administration.
  120. admin_menu : Action déclenchée lors de la création du menu d’administration.
  121. admin_notices : Utilisé pour afficher des messages d’administration.

Hooks de filtre couramment utilisés lors du développement de plugins ou de thèmes WordPress, accompagnés de leurs définitions

  1. the_content: Filtre le contenu d’un article ou d’une page avant qu’il ne soit affiché.
  2. the_title: Filtre le titre d’un article ou d’une page avant qu’il ne soit affiché.
  3. the_excerpt: Filtre l’extrait d’un article avant qu’il ne soit affiché.
  4. the_permalink: Filtre l’URL du permalien avant qu’il ne soit affiché.
  5. the_author: Filtre le nom de l’auteur avant qu’il ne soit affiché.
  6. get_the_date: Filtre la date de l’article avant qu’elle ne soit affichée.
  7. wp_nav_menu_items: Filtre les éléments du menu de navigation.
  8. widget_title: Filtre le titre d’un widget.
  9. wp_login_errors: Filtre les erreurs de connexion.
  10. the_category: Filtre les catégories d’un article avant qu’elles ne soient affichées.
  11. the_tags: Filtre les balises d’un article avant qu’elles ne soient affichées.
  12. wp_list_categories: Filtre la liste des catégories.
  13. wp_list_pages: Filtre la liste des pages.
  14. wp_get_attachment_image_attributes: Filtre les attributs de l’image attachée.
  15. the_content_more_link: Filtre le lien “Lire la suite” dans le contenu.
  16. comment_text: Filtre le texte du commentaire.
  17. wp_title: Filtre le titre de la page.
  18. the_archive_title: Filtre le titre de l’archive.
  19. wp_page_menu: Filtre le menu des pages.
  20. wp_dropdown_categories: Filtre la liste déroulante des catégories.
  21. wp_dropdown_pages: Filtre la liste déroulante des pages.
  22. wp_tag_cloud: Filtre le nuage de tags.
  23. get_search_form: Filtre le formulaire de recherche.
  24. excerpt_length: Filtre la longueur de l’extrait.
  25. excerpt_more: Filtre la suite de l’extrait.
  26. the_content_feed: Filtre le contenu du flux.
  27. the_excerpt_rss: Filtre l’extrait du flux RSS.
  28. the_content_export: Filtre le contenu pour l’exportation.
  29. the_content_rss: Filtre le contenu du flux RSS.
  30. pre_get_posts: Filtre les paramètres de requête avant l’exécution de la requête principale.
  31. the_generator: Filtre la balise générateur dans l’en-tête.
  32. post_class: Filtre les classes de la balise de l’article.
  33. body_class: Filtre les classes du corps du document.
  34. widget_text: Filtre le texte du widget de texte.
  35. wp_get_attachment_url: Filtre l’URL d’une pièce jointe.
  36. wp_get_attachment_metadata: Filtre les métadonnées d’une pièce jointe.
  37. image_send_to_editor: Filtre l’image avant de l’envoyer à l’éditeur.
  38. wp_link_pages: Filtre les liens de pagination.
  39. wp_get_attachment_link: Filtre le lien d’une pièce jointe.
  40. get_avatar: Filtre l’avatar de l’utilisateur.
  41. get_comment_text: Filtre le texte du commentaire.
  42. get_comment_author: Filtre l’auteur du commentaire.
  43. comment_form_default_fields: Filtre les champs du formulaire de commentaire.
  44. comment_form_defaults: Filtre les paramètres par défaut du formulaire de commentaire.
  45. wp_dropdown_users: Filtre la liste déroulante des utilisateurs.
  46. gettext: Filtre les traductions de chaînes de texte.
  47. ngettext: Filtre les traductions de chaînes de texte plurielles.
  48. the_password_form: Filtre le formulaire de mot de passe protégé.
  49. the_category_rss: Filtre les catégories dans le flux RSS.
  50. the_tags_list: Filtre la liste des balises d’un article.
  51. the_author_posts_link: Filtre le lien vers les articles de l’auteur.
  52. the_author_posts: Filtre le nombre d’articles de l’auteur.
  53. widget_display_callback: Filtre le callback d’affichage du widget.
  54. wp_dropdown_users_args: Filtre les arguments de wp_dropdown_users.
  55. wp_dropdown_categories_args: Filtre les arguments de wp_dropdown_categories.
  56. wp_dropdown_pages_args: Filtre les arguments de wp_dropdown_pages.
  57. wp_generate_tag_cloud: Filtre le nuage de tags généré.
  58. wp_list_comments: Filtre la liste des commentaires.
  59. wp_list_pages_excludes: Filtre les pages exclues de wp_list_pages.
  60. wp_list_pages_excludes_args: Filtre les arguments de wp_list_pages_excludes.
  61. wp_list_pluck: Filtre les éléments d’un tableau multidimensionnel.
  62. wp_list_sort: Filtre un tableau avant le tri.
  63. wp_list_widgets: Filtre la liste des widgets.
  64. wp_page_menu_args: Filtre les arguments de wp_page_menu.
  65. wp_nav_menu: Filtre les paramètres de wp_nav_menu.
  66. wp_nav_menu_objects: Filtre les objets de menu.
  67. wp_nav_menu_container_allowedtags: Filtre les balises HTML autorisées dans le conteneur du menu.
  68. wp_nav_menu_container_classes: Filtre les classes du conteneur du menu.
  69. wp_nav_menu_args: Filtre les arguments de wp_nav_menu.
  70. wp_nav_menu_items: Filtre les éléments du menu de navigation.
  71. wp_nav_menu_item_args: Filtre les arguments de l’élément du menu.
  72. wp_nav_menu_objects: Filtre les objets de menu.
  73. wp_get_archives: Filtre la liste des archives.
  74. wp_get_archives_args: Filtre les arguments de wp_get_archives.
  75. wp_get_attachment_link: Filtre le lien d’une pièce jointe.
  76. wp_get_attachment_url: Filtre l’URL d’une pièce jointe.
  77. wp_get_attachment_metadata: Filtre les métadonnées d’une pièce jointe.
  78. wp_get_attachment_image_src: Filtre les dimensions de l’image d’une pièce jointe.
  79. wp_get_attachment_caption: Filtre la légende d’une pièce jointe.
  80. wp_get_attachment_image: Filtre la balise d’image d’une pièce jointe.
  81. wp_get_attachment_thumb_file: Filtre le chemin du fichier miniature d’une pièce jointe.
  82. wp_get_attachment_thumb_url: Filtre l’URL de la miniature d’une pièce jointe.
  83. wp_get_attachment_thumb_file: Filtre le chemin du fichier miniature d’une pièce jointe.
  84. wp_get_attachment_thumb_url: Filtre l’URL de la miniature d’une pièce jointe.
  85. wp_get_attachment_url: Filtre l’URL d’une pièce jointe.
  86. wp_get_attachment_metadata: Filtre les métadonnées d’une pièce jointe.
  87. wp_get_attachment_thumb: Filtre la balise de miniature d’une pièce jointe.
  88. wp_get_attachment_thumb_file: Filtre le chemin du fichier miniature d’une pièce jointe.
  89. wp_get_attachment_thumb_url: Filtre l’URL de la miniature d’une pièce jointe.
  90. wp_get_attachment_image_src: Filtre les dimensions de l’image d’une pièce jointe.

Que sont les hooks WordPress ?

Les hooks WordPress permettent aux utilisateurs de manipuler WordPress sans en modifier le cœur. Il est essentiel pour tout utilisateur de WordPress d’apprendre à utiliser des hooks car il permettent de modifier les paramètres par défaut des thèmes ou des plugins et, en fin de compte, de créer de nouvelles fonctions.

L’utilité des hooks

L’objectif premier des hooks est d’exécuter automatiquement une fonction. En outre, cette technique permet d’ajouter ou de modifier des fonctionnalités à WordPress sans toucher à ses fichiers principaux.

Les hooks sont divisés en deux catégories :

  • Action – permet aux utilisateurs d’ajouter des données ou de modifier le fonctionnement de leur site web. Un hook d’action s’exécutera à un moment précis lorsque le noyau de WordPress, les plugins et les thèmes sont en cours d’exécution.
  • Filtre – peut modifier des données pendant l’exécution du noyau, des plugins et des thèmes de WordPress.

En résumé, les hooks d’action reçoivent des informations, agissent en fonction de celles-ci et ne renvoient rien à l’utilisateur. Inversement, les crochets de filtrage reçoivent des informations, les modifient et les renvoient à l’utilisateur.

Important!Pour utiliser l’un de ces hooks, l’utilisateur doit écrire une fonction personnalisée appelée « Callback » et l’enregistrer avec un hook WordPress pour une action ou un filtre spécifique.

Vous trouverez ci-dessous un exemple de hook d’action qui relie la fonction mytheme_script avec l’action wp_enqueue_script.

function mytheme_script()

{wp_enqueue_script( ‘my-custom-js’, ‘custom.js’, false );}

add_action( ‘wp_enqueue_scripts’, ‘mytheme_script’ );

Comment utiliser les hooks WordPress

L’utilisation des hooks WordPress nécessite quelques connaissances en HTML et en PHP. Heureusement, la création de hooks d’action et de filtre est relativement facile, même pour les débutants sur WordPress.

Créer un crochet d’action

Pour ajouter un hook d’action, vous devez activer la fonction add_action () dans un plugin WordPress. Pour ce faire, ajoutez le code suivant au fichier functions.php :add_action( $target_hook, $the_name_of_function_you_want_to_use, $priority, $accepted_args );

Les hooks utilisent une échelle de priorité pour fonctionner correctement. Cette échelle est une valeur ordinale automatique basée sur une échelle de 1 à 999. 

Elle définit l’ordre des fonctions associées à ce hook particulier. Une valeur de priorité inférieure signifie que la fonction s’exécutera plus tôt, tandis qu’une valeur supérieure s’exécutera plus tard.

L’échelle montre l’ordre de sortie des fonctions lorsqu’elles utilisent le même target_hook. La valeur par défaut de priority_scale est 10. Vous pouvez modifier l’échelle en fonction du numéro de votre target_hook.

$accepted_args est chargé de définir le nombre d’arguments acceptés par la fonction. 

Par défaut, le système lui attribue la valeur 1. Voici un exemple de hook d’action pour le thème WordPress Twenty Twenty-Three ajouté à la fin du fichier functions.php :

<?php

function hook_javascript() {

?>

<script>

alert(‘Hello world…’);

</script>

<?php

}

add_action(‘wp_head’, ‘hook_javascript’);

?>

?>

Analysons le code de l’exemple ci-dessus :

  • <?php – l’endroit où vous placez le hook de la fonction.
  • function hook_javascript() – une fonction qui affectera la valeur initiale, affichant ainsi l’alerte pour les utilisateurs.
  • <script> – représente le texte que vous voulez afficher sur le target_hook.
  • alert(‘Hello world…’); – affichera une alerte pour les utilisateurs avec la phrase « Hello World ».
  • add_action – la commande pour créer le hook d’action.
  • wp_head‘ – Le hook cible que la fonction modifiera.

En pratique, cela ressemble à ceci :

Exemple de crochet d'action sur un site web WordPress en ligne. Il affiche une alerte avec un message spécifié par l'utilisateur

Créer un crochet de filtre

Vous pouvez créer un hook de filtre en utilisant la fonction add_filter(). Le hook de filtre modifie, filtre ou remplace une valeur par une nouvelle.

Comme pour un hook d’action, il filtre une valeur à l’aide des fonctions de hook de filtre associées, telles que apply_filter.

Voici un exemple de hook de filtre que nous allons ajouter au fichier functions.php du thème WordPress Twenty Twenty-Three :

add_filter( ‘the_content’, ‘change_content’ );

function change_content ( $content ) {

$content = ‘Filter hooks are amazing!’;

return $content;

}

Analysons l’extrait de code plus en détail :

  • the_content – le hook cible que la fonction va modifier.
  • change_content’ – affecte la valeur initiale, modifiant ainsi le contenu actuel.
  • $content = ‘Filter hooks are amazing!’; – remplace le contenu de tous vos articles par la phrase écrite.
  • return $content; – renvoie la nouvelle valeur à la fin.

Maintenant, si nous ouvrons n’importe quel article en utilisant le thème Twenty Twenty-Three, nous verrons quelque chose comme ceci :

Exemple de hook de filtre sur un site web WordPress en ligne. Il remplace le contenu de tous les articles par une phrase spécifiée par l'utilisateur

Comme le montre l’exemple, la fonction de filtre a remplacé l’ensemble du contenu par la phrase « Filter hooks are amazing ! ».

Désactiver les hook d’actions et de filtres

Si vous voulez désactiver une commande de add_action() ou add_filter() dans votre code WordPress, utilisez remove_action() et remove_filter().

Ces fonctions permettent d’exclure certaines actions ou certains filtres. Leur utilisation permet de modifier un plugin avec trop de hooks inutiles qui risquent de perturber l’optimisation du site.

Il est également possible de supprimer ces lignes de code inutiles. Cependant, nous ne vous le recommandons que si vous travaillez avec votre propre plugin ou thème. En effet, une telle pratique avec les plugins ou les thèmes de quelqu’un d’autre peut provoquer une erreur fatale si vous supprimez les lignes incorrectes.

Voici un exemple de remove_action() dans WordPress :

remove_action( ‘wp_print_footer_scripts’, ‘hostinger_custom_footer_scripts’);

add_action( ‘wp_print_footer_scripts’, ‘hostinger_custom_footer_scripts_theme’);

function hostinger_custom_footer_scripts_theme()

{

?>

<script>//example of output by theme</script>

<?php

}

L’exemple ci-dessus montre que la commande remove_action() supprime les scripts de pied de page par défaut de WordPress et les remplace par le thème de scripts de pied de page personnalisé de Hostinger.

Cette commande s’applique à tous les types de hooks d’action dans WordPress. En outre, voici un exemple de remove_filter() :

remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );

add_filter( ‘tiny_mce_plugins’, ‘disable_emojis_tinymce’ );

}

L’exemple ci-dessus montre comment désactiver wp_staticize_emoji_for_email, qui convertit les emojis en images statiques.

Il les remplace ensuite par disable_emojis_tinymce, qui désactive la fonctionnalité emoji de WordPress. Cela peut permettre à votre site d’être plus rapide, car les emojis nécessitent une requête HTTP supplémentaire.

De plus, vous pouvez utiliser la commande remove_filter() pour désactiver plusieurs filtres dans une séquence. Voici un exemple :

function disable_emojis() {

remove_action( ‘wp_head’, ‘print_emoji_detection_script’, 7 );

remove_action( ‘admin_print_scripts’, ‘print_emoji_detection_script’ );

remove_action( ‘wp_print_styles’, ‘print_emoji_styles’ );

remove_action( ‘admin_print_styles’, ‘print_emoji_styles’ );

remove_filter( ‘the_content_feed’, ‘wp_staticize_emoji’ );

remove_filter( ‘comment_text_rss’, ‘wp_staticize_emoji’ );

remove_filter( ‘wp_mail’, ‘wp_staticize_emoji_for_email’ );

add_filter( ‘tiny_mce_plugins’, ‘disable_emojis_tinymce’ );

add_action( ‘init’, ‘disable_emojis’ );

}

Le code ci-dessus vise à éliminer la fonction emoji dans WordPress. Il illustre le fait qu’il n’y a pas de limite au nombre de commandes remove_filter que les utilisateurs peuvent intégrer dans un fichier functions.php.

Exemples pratiques de hooks WordPress

Il existe un grand nombre de hooks que les utilisateurs peuvent utiliser pour créer des fonctions WordPress personnalisées. Voici quelques-uns des plus populaires :

admin_post_thumbnail_size

Ce filtre affiche une vignette de votre article dans la section « Featured Image ». Trois paramètres relient la fonction : $size, $thumbnail_id, et $post.

Le hook devrait ressembler à ceci :$size = apply_filters( ‘admin_post_thumbnail_size’, $size, $thumbnail_id, $post );

N’oubliez pas que vous pouvez modifier le paramètre $size comme vous le souhaitez. Par exemple, si vous souhaitez définir la taille de la vignette à 240 x 240 pixels, utilisez ce code :$size = apply_filters( ‘admin_post_thumbnail_size’, 240, $thumbnail_id, $post);

Il est également possible de définir une taille personnalisée pour la vignette en ajoutant la fonction array (). Le code ressemblera à ceci :$size = apply_filters( ‘admin_post_thumbnail_size’, array(240, 400), $thumbnail_id, $post);

La fonction array () ci-dessus définit la taille de la vignette à afficher en 240 x 400 pixels.

after_password_reset

Ce hook d’action est activé lorsqu’un utilisateur réinitialise son mot de passe. Il se compose de deux paramètres, $user et $new_pass, et se présente comme suit :do_action( ‘after_password_reset’, $user, $new_pass );

Par exemple, WordPress utilise ce hook avec la fonction reset_password().

customize_loaded_components

Ce crochet est un filtre qui permet d’exclure certains composants de WordPress du processus de base. Ces fonctions fonctionnent sur les fichiers principaux, tels wp-activate.phpwp-config-sample.php, ou wp-settings.php.

Cependant, il est important de noter que la fonction customize_loaded_components ne peut pas être ajoutée à un thème puisqu’elle ne s’active que pendant la phase plugins_loaded.

Le hook se compose de deux paramètres : $components et $this, et se présente comme suit :$components = apply_filters( ‘customize_loaded_components’, array( ‘widgets’, ‘nav_menus’ ), $this );

Le paramètre $components est un lot de fonctions de base à charger, tandis que $this fait référence à l’objet de la classe existante.

Il est possible de personnaliser la fonction array () pour déterminer les composants à exclure. L’exemple ci-dessus montre que les widgets et les nav_menus sont exclus du processus de base.