web-dev-qa-db-fra.com

Insérer un nouvel élément dans array avec add_filter

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?

7
Ünsal Korkmaz

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()) );
9
Stephen Harris