这条路apply_filters()
工作原理是开发人员提供过滤器的名称和可以过滤的值。这允许其他代码通过添加过滤器来修改该值。
然而,除了价值,apply_filters()
还可以将其他值传递给挂钩函数,以便它们可以在过滤器回调中使用。这些参数作为附加参数传递给apply_filters()
:
$value = apply_filters( \'my_filter_name\', \'abc\', \'arg1\', \'arg2\' );
在该示例中,正在筛选的开发人员
\'abc\'
也可以访问
\'arg1\'
和
\'arg2\'
在他们的代码中。这对于传递有关上下文的附加信息或用于创建原始值的原始数据非常有用,以便其他开发人员可以重用它。
WordPress中的一个示例是the_title
滤器此过滤器还传递帖子ID,以便过滤器回调可以知道标题被过滤的帖子的ID:
apply_filters( \'the_title\', $title, $id );
在您的示例中,相同的过滤器应用于两个单独的值,但每个实例传递一个唯一的第二个值,可用于区分这两个值。
因此,如果我们只看过滤器:
apply_filters( \'pta_sus_public_output\', __(\'You have signed up for the following\', \'pta_volunteer_sus\'), \'user_signups_list_headers_h3\' )
共有3部分:
pta_sus_public_output
筛选器的名称__(\'You have signed up for the following\', \'pta_volunteer_sus\')
, 可以筛选的值user_signups_list_headers_h3
可以在筛选器回调中使用的附加值
在第二个过滤器中,最后一个参数不同:
apply_filters( \'pta_sus_public_output\', __(\'Click on Clear to remove yourself from a signup.\', \'pta_volunteer_sus\'), \'user_signups_list_headers_h4\' )
那样的话
user_signups_list_headers_h4
.
因此,通过检查第二个值,您可以将过滤器仅应用于其中一个过滤器实例。
为此,需要指定在回调函数中接受2个参数:
add_filter( \'pta_sus_public_output\', \'function_to_change_user_signups_list_headers_h4\', 10, 2 );
这是最后一个数字。这是
$accepted_args
property. 之前的数字是优先级,10是默认值。
然后在你的function_to_change_user_signups_list_headers_h4()
函数中,接受附加参数,并使用所需的变量名。我会用$context
:
function function_to_change_user_signups_list_headers_h4( $text, $context ) {
的价值
$context
现在将是
user_signups_list_headers_h3
或
user_signups_list_headers_h4
(或者,如果该过滤器在插件的其他地方使用,则可能是其他值),我们可以使用此选项仅将您的过滤器应用于您想要的过滤器:
function function_to_change_user_signups_list_headers_h4( $text, $context ) {
if ( \'user_signups_list_headers_h4\' === $context ) {
$text = \'Sorry you can not clear\';
}
return $text;
}