add_filter
( string $hook_name, callable $callback, int $priority = 10,int $accepted_args = 1 ),给过滤hook增加一个回调函数。add_filter函数简介
WordPress提供了过滤器hook,允许插件在运行时修改各种类型的内部变量数据。插件可以通过将回调绑定到过滤器hook来修改数据。当稍后应用筛选器时,每个绑定回调函数都按优先级顺序运行,并提供机会返回新值修改旧值。下面的示例展示了如何将回调函数绑定到筛选器hook。注意,$example变量将被传递给回调,(可能)被修改,然后返回:
function example_callback( $example ) {
// Maybe modify $example in some way.
return $example;
}
add_filter( 'example_filter', 'example_callback' );
绑定的回调可以接受无参数,也可以接受参数传递的参数总数在相应的apply_fipler()调用。
换句话说,如果一个 apply_filters() 调用总共传递四个参数,则回调绑定到它能接受零个参数,或一个,最多可以接受4个参数。最重要的部分是$accepted_args必须反映绑定回调的参数选择接受的数量。如果回调没有接受任何参数,则该回调被认为是这和接受一个参数一样。例如:
// Filter call.
$value = apply_filters( 'hook', $value, $arg2, $arg3 );
// Accepting zero/one arguments.
function example_callback() {
...
return 'some value';
}
add_filter( 'hook', 'example_callback' ); // Where $priority is default 10, $accepted_args is default 1.
// Accepting two arguments (three possible).
function example_callback( $value, $arg2 ) {
...
return $maybe_modified_value;
}
add_filter( 'hook', 'example_callback', 10, 2 ); // Where $priority is 10, $accepted_args is 2.
重要提示:无论回调是否有效,该函数都将返回true。这由你来决定是否值得注意。这样做是为了优化,使程序运行更快。
add_filter函数参数
$hook_name(string) (Required)要向其添加回调的筛选器的名称。$callback(callable) (Required)应用筛选器时要运行的回调
$priority(int) (Optional) 用于指定与特定过滤器相关联的函数的执行顺序。较低的数字越早执行,并且具有相同优先级的函数按照它们被添加到过滤器中的顺序来执行。默认值:10
$accepted_args(int) (Optional) 函数所接受的参数数量。默认值:1
add_filter函数扩展
hook函数可以获取do_action()或apply_filters() 运行匹配的额外参数。例如,comment_id_not_found操作将向每个回调传递注释ID。虽然您可以传递$accepted_args的数量,但您只能操作 $value。其他参数只是为了提供上下文,它们的值不能被过滤器函数更改。
您还可以将类中的方法作为回调传递。
类中的静态函数作为回调函数的举例
add_filter( 'media_upload_newtab', array( 'My_Class', 'media_upload_callback' ) );
对象中的方法作为回调函数
add_filter( 'media_upload_newtab', array( $this, 'media_upload_callback' ) );
使用匿名函数作为回调函数
add_filter源代码
文件:wp-includes/plugin.phpfunction add_filter( $hook_name, $callback, $priority = 10, $accepted_args = 1 ) {
global $wp_filter;
if ( ! isset( $wp_filter[ $hook_name ] ) ) {
$wp_filter[ $hook_name ] = new WP_Hook();
}
$wp_filter[ $hook_name ]->add_filter( $hook_name, $callback, $priority, $accepted_args );
return true;
}
以下是青锋建站给大家分享的wordpress使用add_filter添加hook回调函数,青锋建站承接网站建设服务,包括织梦建站,phpcms建站,wordpress建站,CMS系统开发,SEO网站优化,网络营销推广,企业邮箱,400电话。
转载请注明来源网址:青锋建站-http://www.sjzphp.com/kaifazhe/wordpress/add_filter_1389.html