フィルターは、フックされた各コールバック関数を(優先順で)呼び出すことによって機能します。フィルタリングされる値は、最初のコールバック関数に渡されます。次に、そのコールバック関数の戻り値が2番目のコールバックに渡され、フックされたすべてのコールバックが実行されるまで、その戻り値が3番目以降に渡されます。最後に返された値が何であっても(つまり、すべてのコールバックを通過したフィルター後の値)、フィルターが適用された後の値になります。
上記の例では、各フィルターは渡されたものを無視し、代わりに独自の新しい配列を返します。
(補足:コールバックとしての無名関数を避けてください)
試してください:
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()) );