Nous avons déjà couvert pas mal de sujet sur le développement de logiciel avec WordPress, et durant ces sessions, vous avez certainement entendu parlé des filtres et actions.

Ce sont une partie essentielle de l’architecture de WordPress. Et vous avez la possibilité d’en créer de nouveaux pour répondre à vos besoins.

En un mot, une architecture « événementielle » est une technique qui vous permet d’écouter la survenance d’un événement et d’agir en conséquence soit sur l’événement en question, soit sur un autre aspect. Votre réaction, ce que vous écrivez, c’est de savoir comment vous pouvez créer la fonctionnalité que vous désirez, pour étendre les fonctionnalités de WordPress.

Voici un exemple très simple, la publication d’un article WordPress est un exemple d’événement (publish_post) qui modifie un état.

Tel est le fondement de l’extensibilité de WordPress, qui en fait l’un des écosystèmes CMS les plus riches, en plein essor avec des milliers de thèmes et plugins tout aussi riches en fonctionnalités.

Il y a une autre raison fondamentale pour laquelle l’utilisation des crochets est aussi importante. En utilisant des crochets, vous pouvez étendre et créer sur WordPress sans modifier le code source de ce dernier.

En fait, permettez-moi de reformuler cette déclaration.

Si quelqu’un qui vous recrute (ou que vous recrutez) pour un travail sur WordPress, vous suggère de changer du code source de WordPress, arrêtez tout sur place.

Tous ceux qui sont prêt à briser l’évolutivité de votre site WordPress n’ont aucune idée de ce dont ils parlent. Si ces personnes se souciaient de la sécurité, elles n’auraient même pas envisagé cela.

Nous en avant déjà parlé auparavant. La mise à jour de WordPress (y compris pour ses thèmes et plugins) vers la dernière version disponible est l’un des fondements même de la sécurité de WordPress. Les développeurs qui modifient le code source votre site le laisseront en ayant certainement brisé le cycle de mise à jour de WordPress (s’ils ne le font pas leur modification ne seront écrasé à la prochaine mise à jour).

D’autre part, si vous utilisez des crochets et toutes les autres options d’extensibilité que WordPress met à votre disposition, l’évolutivité de votre blog WordPress sera assurée.

actions-et-filtres-wordpress

Crochets, Actions ou filtres? Qu’est-ce que ça veut dire ?

Les crochets sont essentiellement des événements qui se produisent pendant l’exécution de toutes les fonctionnalités de WordPress, des thèmes ou des plugins.

Mais pourquoi sont-ils réellement appelés crochets?

Les développeurs qui cherchent à étendre ou mettre en œuvre des fonctionnalités spécifiques peuvent «s’accrocher» à des événements dès qu’ils sont déclenchés.

Comme WordPress va à travers ses phases d’exécution, il contrôle pour voir si un plugin (ou thème) a enregistré une fonction à exécuter à ce moment-là, si une fonction est retrouvée, elles seront exécutées à ce moment.

Le codex de WordPress, dans le cadre de la documentation de l’API WordPress, explique les crochets, Actions et filtres correctement, je fournirai quand même quelques détails utiles :

Il existe deux principaux types de crochets :

  • Actions (ou encore « action Hooks »)
  • Filtres (ou encore « Filter crochets »)

En réalité, ceux-ci sont assez similaires dans leur capacité de réalisation, mais il y a quelques différences subtiles.

La différence entre Actions et Filtres

Commençons par les similitudes avant de parler des différences :

  • Les actions et les filtres reçoivent des données à travers un certain nombre de paramètres.
  • Les actions et les filtres sont aussi, la plupart du temps en mesure de faire la même chose (si vous jetez un œil au code source de WordPress, vous verrez que les fonctions qui sont mis en œuvre pour les actions ne sont que des enveloppes des fonctions des filtres).

Il y a cependant, une différence essentielle entre ces deux types de crochets WordPress.

Les filtres sont nécessaires pour renvoyer une valeur, les actions ne le font pas.

En substance, avec un Filtre, la fonction « crochu » obtient une valeur spécifique comme paramètre, il fait son travail puis retourne une version modifiée (ou non) de cette valeur.

Une action n’a pas besoin de retourner une valeur.

En de termes plus pratiques, avec un Filtre, vous travaillerez habituellement sur le contenu, ferez vos « modifications« , puis renverrez ce contenu. Par exemple, comme nous le verrons ci – dessous les filtres « title_save_pre » qui est un filtre sur le titre d’un article, tandis que les « content_save_pre » qui est un filtre sur le contenu d’un article.

D’autre part, une » Action » fait quelque chose (qui peut manipuler des données ou simplement utiliser ces données) quand un événement se produit. L’action « publish_post » se déclenche quand un article est publié.

Quand et comment utiliser une Action

Vous utiliserez une action lorsque :

  • Vous souhaitez Injecter un code HTML ou tout autre contenu dans la mémoire tampon.
  • Modifier une ou plusieurs variables globales
  • Modifier les paramètres passés à votre fonction

Voici comment ajouter une action :

add_action( $hook, $function_to_add, $priority, $accepted_args );

où « $hook » serait l’action que vous voulez accrocher, « $function_to_add » est la fonction qui sera exécutée lorsque ce crochet est déclenché.

Quand et comment utiliser un Filtre

Vous pouvez utiliser un filtre lorsque vous avez besoin de faire tout ce qui précède, mais aussi souhaitez modifier un paramètre qui sera utilisé par WordPress.

En fait, ce n’est non seulement un besoin, mais une exigence. Vous devez retourner une valeur pour le paramètre si vous utilisez un filtre.

La façon d’ajouter un filtre est assez similaire de celui des crochets :

add_filter( $hook, $function_to_add, $priority, $accepted_args );

Où une fois de plus, « $hook » serait le filtre à utiliser et  « $function_to_add » est la fonction que vous devrez écrire. Lisez la documentation de WordPress sur les crochets pour en savoir plus.

Retrait d’un filtre ou d’une action

Tout comme vous ajouter des Actions et Filtres, vous pouvez également les supprimer. C’est l’inverse de l’ajout des Actions et Filtre, mais la syntaxe est très similaire :

remove_action( $hook, $function_to_remove, $priority);

remove_filter( $hook, $function_to_remove, $priority);

Où « $priority » est un argument optionnel.

Dans les deux « add_filter » et « remove_filter », la « $prioirity » (priorité) détermine l’ordre dans lequel les crochets se déclenchent. S’il y a plusieurs crochets « enchaînés » ils s’exécuteront les uns après les autres.

Exemple Simple : Comment ajouter le code suivi Google Analytics sur WordPress

Rappelez-vous que nous vous avons déjà montré comment créer un plugin WordPress. Maintenant tout ce que vous aurez à faire, c’est d’ajouter le code suivant dans votre plugin WordPress.

//Google Universal Analytics
function google_analytics() { ?>
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 
  ga('create', 'GA-XXXXXX-XX', 'auto');
  ga('send', 'pageview');
</script>    
<?php }
add_action ('wp_head', 'google_analytics');

C’est tout pour ce tutoriel. J’espère que vous saurez désormais comment faire une distinction entre filtres et actions sur WordPress. Si vous avez des questions, n’hésitez pas à les poser.