add_filter

函数
add_filter ( $hook_name, $callback, $priority = 10, $accepted_args = 1 )
参数
  • (string) $hook_name The name of the filter to add the callback to.
    Required:
  • (callable) $callback The callback to be run when the filter is applied.
    Required:
  • (int) $priority Optional. Used to specify the order in which the functions associated with a particular filter are executed. Lower numbers correspond with earlier execution, and functions with the same priority are executed in the order in which they were added to the filter. Default 10.
    Required:
    Default: 10
  • (int) $accepted_args Optional. The number of arguments the function accepts. Default 1.
    Required:
    Default: 1
返回值
  • (true) Always returns true.
定义位置
相关方法
did_filterhas_filterdoing_filterapply_filtersadd_feed
引入
0.71
弃用
-

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;
}

常见问题

FAQs
查看更多 >