add_filter('example_filter', function(){ return array( 'tax1' ); } );
add_filter('example_filter', function(){ return array( 'tax2' ); } );
add_filter('example_filter', function(){ return array( 'tax3' ); } );
print_r( apply_filters( 'example_filter', array()) );
Le résultat est
Array ( [0] => tax3 )
Je ne pouvais pas comprendre comment insérer un nouvel élément dans ce tableau avec add_filter. Quelle est la bonne façon?
Les filtres fonctionnent en appelant chacune des fonctions de rappel accrochées (par ordre de priorité). La valeur à filtrer est transmise à la première fonction de rappel. La valeur renvoyée de cette fonction de rappel est ensuite transmise au second rappel, et la valeur renvoyée à partir de celle-ci est transmise à la troisième, et ainsi de suite, jusqu'à ce que tous les rappels liés aient été déclenchés. Quelle que soit la dernière valeur renvoyée (c'est-à-dire que la valeur filtrée ayant traversé tous les rappels) est alors considérée comme la valeur après l'application du filtre.
Dans l'exemple ci-dessus, chaque filtre ignore ce qui lui est transmis et renvoie simplement son propre nouveau tableau.
( Note latérale: éviter les fonctions anonymes comme rappels)
Essayer:
add_filter('example_filter', 'my_example_filter_1' );
function my_example_filter_1( $array ){
$array[]='tax1';
return $array;
}
add_filter('example_filter', 'my_example_filter_2' );
function my_example_filter_2( $array ){
$array[]='tax2';
return $array;
}
add_filter('example_filter', 'my_example_filter_3' );
function my_example_filter_3( $array ){
$array[]='tax3';
return $array;
}
print_r( apply_filters( 'example_filter', array()) );