Comment fonctionne les filtres WordPress ?
Les filtres aussi appelé hooks permettent de modifier le comportement d’une fonction, que se soit pour le thème ou l’administration de WordPress. Le filtre sera appliqué à un certain moment de l’exécution de la fonction.
Création d’un filtre WordPress
<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>
$tag (obligatoire) nom du filtre.
$function_to_add (obligatoire)– non de la fonction a supprimer.
$priority (facultatif) – Un nombre entier pour spécifier quand notre fonction sera exécutée. La valeur par défaut est 10.
$accepted_args (facultatif) – Un nombre entier pour définir le nombre d’arguments que le filtre accepte. La valeur par défaut est 1.
Prenons un exemple : Imaginiez que vous créez une fonction qui retourne une phrase:
function fred_quote() { $quote = "Une voiture rouge."; return $quote; }
Si vous voulez laisser des personnes filtrer cette citation, vous devez utiliser apply_filter() comme ceci :
function fred_quote() { $quote = "Une voiture rouge."; return apply_filters( 'fred_quote', $quote ); }
La fonction apply_filter
va autoriser la modification de la fonction et la variable ($quote) qui contient les données.
<?php apply_filters( $tag, $value, $var ... ); ?>
$tag (obligatoire)– nom de la fonction
$value (obligatoire) -La valeur qui peut être modifiée par des filtres
$var () (facultatif) -variable supplémentaire.
apply_filter
peut être utilisé en dehors d’une fonction.
De cette façon, un autre développeur pourra changer les données de votre fonction comme ceci :
function change_fred_quote( $quote ) { $quote = str_replace( 'rouge', 'verte', $quote ); return $quote; } add_filter( 'fred_quote', 'change_fred_quote' );
WordPress contient plusieurs centaines de fonctions qui peuvent être modifiées ou améliorées, c’est pourquoi je vais faire une liste de filtres que vous pourrez appliquer à votre blog WordPress :
[list-posts]
Magnifique !
Depuis le temps que je cherche à comprendre les add_filter() en vain, grâce à vous, tout est devenu lumineux !
Merci encore.
p.s : Vous ne pourriez pas faire un article sur le add_action() ?