
add_filter ( $hook_name, $callback, $priority = 10, $accepted_args = 1 )
add_filter: 这个函数用来向WordPress添加一个新的过滤器: 该函数有三个参数:钩子名称、回调函数和过滤器的优先级。
为一个过滤器钩子添加一个回调函数。
WordPress提供过滤器钩子,允许插件在运行时修改各种类型的内部数据。
一个插件可以通过绑定一个回调函数到一个过滤器钩子来修改数据: 当过滤器后来被应用时,每个绑定的回调函数按优先顺序运行,并有机会通过返回一个新值来修改一个值。
下面的例子显示了一个回调函数是如何绑定到过滤器钩子上的。
注意`$example`被传递给回调,(可能)被修改,然后返回:
function example_callback( $example ) {
// Maybe modify $example in some way.
return $example;
}
add_filter( ‘example_filter’, ‘example_callback’ );
绑定的回调可以接受从无到有的参数总数,这些参数在相应的apply_filters()调用中作为参数传递。
换句话说,如果一个apply_filters()调用传递了四个参数,与之绑定的回调可以不接受任何参数(与1相同),也可以接受最多四个参数。重要的是,`$accepted_args’值必须反映被绑定的回调*实际*选择接受的参数数量。如果回调没有接受任何参数,则被认为与接受1个参数的情况相同。比如说:
// 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。这取决于你的照顾。这样做是为了优化,所以一切都尽可能的快。
function 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; }