1. 首页
  2. WordPress 函数手册

add_filter()

add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

将函数或方法挂接到特定的筛选器操作。
Hook a function or method to a specific filter action.

目录锚点:#说明#参数#返回#源码#笔记


说明(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+)。例如:

add_filter() 为WP2原创文章,链接:https://www.wp2.cn/functions/add_filter/

发表评论

您的电子邮箱地址不会被公开。