Apply filter, filters. Comprendre les filtres Wordpress.

Les « hooks » add_action() sont faciles à comprendre contrairement aux « hooks » add_filters/apply_filters. Je fais un résumé ici afin de mieux m’expliquer à moi-même ce que fait exactement les filtres WordPress.

Je me réfère au codex mais aussi à themeblvd qui offre une excellente explication.

Tout d’abord, il est important de savoir quand l’utilisation d’un filtre est adéquat. Si vous répondez oui à une des questions suivantes, il se peut fortement que vous ayez besoin d’utiliser les filtres :

  • Vous travaillez avec un Child Theme ou un Plugin et voulez modifier une variable, une mécanique ou quelque chose relatif à la donnée qui transige dans le processus de base
  • Vous avez besoin de modifier une variable à l’intérieur d’une fonction existante
  • Vous avez besoin de modifier ce que retourne une fonction existante
  • Vous hésitez sur les modifications que les futurs utilisateurs voudront sur une fonction que vous avez créée sur votre thème ou votre plugin

Je prends soin d’écrire fonction existante puisqu’un filtre permet justement de filtrer quelque chose (une variable) qui existe avant que ce quelque chose passe à la prochaine étape de votre processus.

Comment fonctionne un filtre

Pour qu’un filtre (add_filter) ait un impact sur vos variables il faut indiquer à quel endroit il sera utilisé avec apply_filters. Jusqu’à maintenant pas trop compliqué.

Récapitulatif, il faut :

  1. Un endroit où il est intéressant de filtrer une variable, situé avec un apply_filters()
  2. Un « hook » add_filter() avec lequel on pointe le apply_filters déclaré plus haut

Donc, on ne peut ajouter un filtre (add_filter) sans connaitre l’endroit où est déclaré son application (apply).

Exemple en ce matin plein de saveur fruitée et de santé :

filtre

Sans aller plus profondément sur le sujet, j’aimerai que vous portiez attention à ceci :

    • On aurait pu passer un paramètre à la fonction « jaime_les_fruits_filtre() ». Cependant, ceci implique de modifier le « core » de votre fonction, thème, ou plugin sans savoir vraiment ce que les utilisateurs en feront. Alors plutôt que de commencer à prévoir avec des array_merge(), des switch ou des wp_parse_args(), pour ne nommer que ceux là, laisser l’utilisateur prendre soin de faire ses propres conditions. Bref, les filtres wordpress laissent aux utilisateurs de votre plugin ou de votre thème le champs libre pour toutes modifications souhaitées et en vous évitant de prévoir tous les scénarios possibles.

      Exemple : Un utilisateur crée dans son thème un setting qui permet d’entrer le nom d’un fruit et il a téléchargé votre plugin de fruit. Il décide que get_option() est la manière de récupérer le nom du fruit pour son thème. Du coup, sans avoir à aller dans votre plugin, il n’a qu’à ajouter un filtre qui pointe vers votre apply_filters.

 

    • Les filtres peuvent recevoir plusieurs paramètres. À la déclaration du apply_filters, il est possible d’y passer des paramètres qui eux auraient pu être passées dans « jaime_les_fruits_filtre($param1, $param2, $paramN) »

 

    • Les filtres ont des priorités (10, 30)

 

    • Un apply_filters() sans add_filter() qui pointe vers lui ne fait absolument rien

 

    • Les filtres rendent vos créations modulaires et par conséquent flexibles

 

    • Et s’ils vous plait, ne faites pas comme WooCommerce qui a la mauvaise manie de ne pas documenter sont les apply_filters() et comment utiliser les paramètres qu’ils reçoivent!

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s