我读过的WordPress抄本很多次,但还是不明白如何返回值,如果超过一个参数参与。 例如:
function bbp_get_topic_title( $topic_id = 0 ) {
$topic_id = bbp_get_topic_id( $topic_id );
$title = get_the_title( $topic_id );
return apply_filters( 'bbp_get_topic_title', $title, $topic_id );
}
另外,在上述过滤器中,有2个参数。 当我add_filter
,我应该返回2的值,或只返回一个我需要什么? 在下面的例子正确的,如果需要的称号?
add_filter( 'bbp_get_topic_title', 'my_topic_title', 10, 2 );
function my_topic_title( $title, $topic_id ){
$title = 'my_example_title';
return $title;
}
这是完全正确的。
当注册一个过滤器(或基本呼叫apply_filters
),你应该调用该函数至少有两个参数-要应用的过滤器和该过滤器将被应用价值的名称。
你传递给函数的任何进一步的参数将被传递给过滤功能,但只有当他们要求额外的参数。 下面是一个例子:
// Minimal usage for add_filter()
add_filter( 'my_filter', 'my_filtering_function1' );
// We added a priority for our filter - the default priority is 10
add_filter( 'my_filter', 'my_filtering_function2', 11 );
// Full usage of add_filter() - we set a priority for our function and add a number of accepted arguments.
add_filter( 'my_filter', 'my_filtering_function3', 12, 2 );
// Apply our custom filter
apply_filters( 'my_filter', 'content to be filtered', 'argument 2', 'argument 3' );
鉴于上面的代码中, content to be filtered
将首先被传递给my_filtering_function1
。 此功能只接受content to be filtered
,而不是额外的参数。
然后,内容将被传递(由处理后my_filtering_function1
到) my_filtering_function2
。 同样的功能将只接收的第一个参数。
最后,内容将被传递给my_filtering_function3
功能(因为它已经由前两个函数改变)。 这时候会被传递给2个参数,而不是(因为我们指定的这一点),但它不会让argument 3
争论。
见apply_filters()
在源 。