Il est impossible d’écrire des plugins et/ou des thèmes pour Wordpress sans passer par l’utilisation des filtres et des actions. En fait, Wordpress utilise énormément les deux, et ne pas comprendre ce que c’est ni à quoi ça sert, et bien c’est mal… Et ce qui est encore plus mal, c’est de ne pas comprendre ce qui les différencie! La nuance entre un filtre et une action est ténue, et c’est une question qui revient souvent chez les développeurs débutant avec Wordpress: Quelle est la différence entre un filtre et une action?

La première partie de cet article va nous permettre de comprendre ce que sont exactement les filtres et les actions. Dans la seconde partie de l’article, nous verrons plus en détail comment les utiliser et comment déclarer ses propres filtres et actions, et nous verrons également comment cela peut nous rendre la vie plus facile lors du développement d’un plugin/thème pour Wordpress.

Hooks/hameçons

Un hook “Hook (informatique) sur Wikipedia”) permet à l’utilisateur d’un logiciel de personnaliser le fonctionnement de ce dernier, en lui faisant réaliser des actions supplémentaires à des moments déterminés. Le concepteur du logiciel prévoit des hooks au long du fonctionnement de son programme, qui sont des points d’entrée vers des listes d’actions. Par défaut, le hook est généralement vide et seules les fonctionnalités de base de l’application sont exécutées. Cependant, l’utilisateur peut « accrocher » des morceaux de programme à ces hooks pour personnaliser le logiciel.

Qu’est-ce que cela veut dire concrètement? Et bien concrètement, cela veut dire que vous pouvez ajouter des fonctionnalités et modifier des données sans avoir à modifier le code source de Wordpress. Les filtres et les actions vous permettent justement d’atteindre ces objectifs. Modifier le noyau de Wordpress est une ignominie sans nom et l’idée de la possibilité de la chose ne devrait même pas traverser votre esprit! Que se passe-t-il lorsque vous mettez à jour un site Wordpress dont le code du noyau a été modifié? Et bien vous perdez toutes les modifications vu que Wordpress va écraser les fichiers de l’ancienne version lors de sa mise à jour…

Les filtres

Définition

Un filtre est une fonction qui reçoit un paramètre en entrée, le transforme, et renvoie le résultat de la transformation. De nombreuses fonctions du langage PHP peuvent être considérées comme des filtres. Par exemple, la fonction strtoupper reçoit une chaîne de caractères en entrée, la transforme (= convertit chacun des caractères de la chaîne en son équivalent majuscule) et renvoie le résultat.

Documentation officielle add_filter.

Syntaxe

1
add_filter( $nom, $fonction_callback, $priorite, $nombre_parametres );
  • $nom: nom du filtre existant sur lequel la fonctionné $fonction_callback sera exécutée
  • $fonction_callback: Le nom de la fonction à appeler lorsque le filtre est exécuté
  • $priorite: utilisé pour spécifier l’ordre dans lequel les fonctions associées à un filtre particulier sont exécutées. Plus le nombre est bas, plus la priorité est grande. La valeur par défaut est 10.
  • $nombre_parametres: Le nombre de paramètres que la fonction spécifiée par $fonction_callback accepte. La valeur par défaut est 1. (Plus de détails sur la syntaxe autorisée, lire cet article)
  • valeur de retour: La fonction renvoie true si la fonction $fonction_callback a pu être correctement ajoutée à la liste de fonctions à appliquer sur le filtre spécifié par $nom. Aucun test n’est fait pour vérifié que la fonction $fonction_callback existe ou non pour des raisons d’optimisation. C’est votre boulot de vérifier que la fonction existe bien!

Exemple

Afficher tous les titres des articles en majuscule:

1
add_filter( 'the_title', 'strtoupper' );

Les actions

Définition

Une action est un hook permettant au développeur d’ajouter des fonctionnalités supplémentaires à une étape particulière. La fonction appelée ne reçoit pas nécessairement de valeur en entrée, et, différence notable avec les filtres, ne doit pas renvoyer de valeur. Si une valeur est renvoyée, elle est ignorée par Wordpress.

Documentation officielle add_action.

Syntaxe

1
add_action( $nom, $fonction_callback, $priorite, $nombre_parametres );
  • $nom: nom du filtre existant sur lequel la fonction $fonction_callback sera exécutée
  • $fonction_callback: Le nom de la fonction à appeler lorsque le filtre est exécuté
  • $priorite: utilisé pour spécifier l’ordre dans lequel les fonctions associées à un filtre particulier sont exécutées. Plus le nombre est bas, plus la priorité est grande. La valeur par défaut est 10.
  • $nombre_parametres: Le nombre de paramètres que la fonction spécifiée par $fonction_callback accepte. La valeur par défaut est 1. (Plus de détails sur la syntaxe autorisée, lire cet article)
  • valeur de retour: La fonction renvoie toujours true.

Exemple

Envoyer un email lors de la publication d’un post:

1
2
3
4
5
function email_amis( $post_ID ) {
   $amis = 'bob@example.org, susie@example.org';
   wp_mail( $amis, "Mise à jour du blog Damoiseau.me", 'le blog Damoiseau.me a été mist à jour: http://damoiseau.me' );
}
add_action( 'publish_post', 'email_amis' );

Quelques nouvelles

Bien…. Ca fait plus de 5 mois que je n’ai plus rien posté sur ce blog, la honte! Pourtant les idées se bousculent au portillon…## Ce qu …… Continuer la lecture