使用ADD_FILTER将新元素插入数组

时间:2012-06-18 作者:Ünsal Korkmaz

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()) );
结果是

Array ( [0] => tax3 ) 
我不知道如何使用add\\u filter将新元素插入到此数组。什么是正确的方法?

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

过滤器通过调用每个挂钩回调函数(按优先级顺序)工作。将要筛选的值传递给第一个回调函数。然后将该回调函数的返回值传递给第二个回调,并将该回调函数的返回值传递给第三个回调,依此类推,直到所有挂接的回调都已触发。无论最后返回的值是什么(即通过所有回调的筛选值),都将在应用筛选后作为值。

在上面的示例中,每个过滤器都忽略传递给它的内容,而只是返回自己的新数组。

(Side note: 避免匿名函数作为回调)

尝试:

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()) );

结束

相关推荐

Apply_Filters()和_Excerpt提供了意外的结果

我觉得我一定错过了一些显而易见的东西,但我似乎无法让WordPress合作。我正在用一个函数生成Facebook OG标签。除了摘录,一切都很好。自get_the_excerpt($post->ID), 有没有其他方法可以创建摘录而不必创建一个全新的循环?我觉得这太过分了。我的第一反应是apply_filters():$description = apply_filters(\'the_excerpt\', get_post($post->ID)->post_content);