Filter

Définition : Un filtre WordPress est un point d’extension qui transmet une valeur à des fonctions capables de la transformer. Chaque fonction doit retourner la valeur, modifiée ou non, pour maintenir le traitement normal du système.

Terminologie

Terme : Filter

Autres appellations : Filter hook, Crochet de filtre

À quoi cela sert

Un filtre sert à adapter une donnée sans réécrire la fonctionnalité qui la produit : titre, texte, paramètre ou tableau de classes CSS. Il est prévu pour transformer des valeurs, pas pour exécuter des opérations annexes à chaque passage.

Comment cela fonctionne

Lors de apply_filters(), les callbacks enregistrés s’exécutent par priorité et reçoivent successivement la valeur issue du précédent. Un callback qui oublie return peut provoquer un résultat null et détériorer le traitement. Les paramètres supplémentaires servent à contextualiser la transformation.

Dans quel contexte l’utiliser

Utiliser un filtre si l’on souhaite modifier une donnée immédiatement avant sa consommation : par exemple ajouter une classe au tableau body_class. Contrôler le type de la valeur d’entrée, sa validité et le contexte d’appel.

Exemple concret

Un thème ajoute une classe CSS distincte au corps des pages produits sans modifier le code interne générant les classes.

Exemple de code commenté

<?php
add_filter( 'body_class', function ( $classes ) {
    if ( is_singular( 'product' ) ) {
        $classes[] = 'atoolpha-produit';
    }
    return $classes; // Indispensable pour un filtre.
} );

Explication de l’exemple

Le callback reçoit les classes existantes et renvoie le tableau enrichi. Le même tableau est transmis aux autres filtres et au mécanisme qui construit finalement l’attribut class de la balise body.

Précautions et limites

Ne pas produire directement du HTML avec echo dans un filtre destiné à retourner des données ; échapper la sortie au moment de l’affichage, selon son contexte.

Termes associés

  • Hook
  • Action
  • add_filter()
  • apply_filters()

Références officielles

Bouton retour en haut de la page