add_filter()函数是Wordpress函数,将函数或方法挂接到特定的筛选器操作。
add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
说明(Description)
WordPress提供了过滤器钩子,允许插件在运行时修改各种类型的内部数据。
插件可以通过将回调绑定到筛选器挂钩来修改数据。稍后应用筛选器时,将按优先级顺序运行每个绑定回调,并提供通过返回新值来修改值的机会。
下面的示例演示如何将回调函数绑定到筛选器挂钩。
注意$example被传递给回调函数,(可能)被修改,然后返回:
函数示例回调($example){
//也许可以用某种方式修改$example。
返回$example;
}
添加过滤器(“example_filter”、“example_callback”);
绑定回调可以接受从none到作为参数传递的参数总数
在相应的apply_filters()调用中。
换句话说,如果apply_filters()调用传递了四个参数,则回调绑定到
它不能接受任何参数(与1相同)或最多4个参数。重要的是
$accepted_args值必须反映绑定回调实际的参数数
选择接受。如果回调未接受任何参数,则认为
与接受1个参数相同。例如:
//过滤调用。
$value=应用过滤器(’hook’,$value,$arg2,$arg3);
//接受零/一个参数。
函数示例_callback(){
…
返回“某个值”;
}
add_filter(’hook’,’example_callback’);//其中$priority是默认值10,$accepted_args是默认值1。
//接受两个论点(三个可能)。
函数示例u回调($value,$arg2){
…
返回$maybe_modified_value;
}
add_filter(’hook’,’example_callback’,10,2);//其中$priority是10,$accepted_args是2。
注意:无论回调是否有效,函数都将返回true。由你来照顾。这是为了优化的目的,所以一切尽可能快。
参数(Parameters)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
$tag | (string) | 必需 | 要挂接$function_to_add回调的筛选器的名称。 |
$function_to_add | (callable) | 必需 | 应用筛选器时要运行的回调。 |
$priority | (int) | 可选 | 用于指定与特定操作关联的函数的执行顺序。较低的数字对应于先前的执行,具有相同优先级的函数按它们添加到操作中的顺序执行。 |
$accepted_args | (int) | 可选 | 函数接受的参数数。 |
返回(Return)
(true)
源码(Source)
/**
* Hook a function or method to a specific filter action.
*
* WordPress offers filter hooks to allow plugins to modify
* various types of internal data at runtime.
*
* A plugin can modify data by binding a callback to a filter hook. When the filter
* is later applied, each bound callback is run in order of priority, and given
* the opportunity to modify a value by returning a new value.
*
* The following example shows how a callback function is bound to a filter hook.
*
* Note that `$example` is passed to the callback, (maybe) modified, then returned:
*
* function example_callback( $example ) {
* // Maybe modify $example in some way.
* return $example;
* }
* add_filter( 'example_filter', 'example_callback' );
*
* Since WordPress 1.5.1, bound callbacks can take as many arguments as are
* passed as parameters in the corresponding apply_filters() call. The `$accepted_args`
* parameter allows for calling functions only when the number of args match.
*
* *Note:* the function will return true whether or not the callback is valid.
* It is up to you to take care. This is done for optimization purposes,
* so everything is as quick as possible.
*
* @since 0.71
*
* @global array $wp_filter A multidimensional array of all hooks and the callbacks hooked to them.
* @global array $merged_filters Tracks the tags that need to be merged for later. If the hook is added,
* it doesn't need to run through that process.
*
* @param string $tag The name of the filter to hook the $function_to_add callback to.
* @param callback $function_to_add The callback to be run when the filter is applied.
* @param int $priority Optional. Used to specify the order in which the functions
* associated with a particular action are executed. Default 10.
* Lower numbers correspond with earlier execution,
* and functions with the same priority are executed
* in the order in which they were added to the action.
* @param int $accepted_args Optional. The number of arguments the function accepts. Default 1.
* @return true
*/
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
global $wp_filter, $merged_filters;
$idx = _wp_filter_build_unique_id($tag, $function_to_add, $priority);
$wp_filter[$tag][$priority][$idx] = array('function' => $function_to_add, 'accepted_args' => $accepted_args);
unset( $merged_filters[ $tag ] );
return true;
}
更新版本 | 源码位置 | 使用 | 被使用 |
---|---|---|---|
0.71 | wp-includes/plugin.php:108 | 94 | 0 |
笔记(Notes)
示例:让我们将额外的部分添加到2117首页。
示例:显示文章摘要的自定义长度。
要将变量传递给过滤器的被调用函数,可以在原始编码的applyu过滤器中没有参数时使用闭包(因为PHP 5.3+)。