add_filter() 是 WordPress 提供的一个过滤器钩子函数,我们可以通过此函数在程序运行时修改各种类型的内部数据。
这个钩子的使用方法很简单,我们仅需用它构造一个回调函数即可,如下所示:
function example_callback( $example ) {
// 对 $example 的一系列处理过程
return $example;
}
add_filter( 'example_filter', 'example_callback' );
通过将参数 $example 传递给回调函数,在经过一系列处理后返回该 $example 的新值。add_filter() 一共有四个参数,其调用方法如下所示:
add_filter( string $tag, callable $function_to_add, int $priority = 10,int $accepted_args = 1 )
$tag:必填(字符串)。挂载回调函数的过滤器名称。
$function_to_add:必填(可调用的函数)。过滤器应用时调用的回调函数。
$priority:可选(整型)。用于指定与特定操作关联的函数的执行顺序,默认为10。
$accepted_args:可选(整型)。add_filter() 过滤器可接受的参数个数,默认为1。
由最后一个参数我们可以了解到 add_filter() 钩子的回调函数 $function_to_add 可以接受零到多个参数,这取决于 add_filter() 最后一个参数的设置。
最后,我们看下 add_filter() 函数的具体定义,其位于 wp-includes/plugin.php 文件中,具体代码如下:
function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {
global $wp_filter;
if ( ! isset( $wp_filter[ $tag ] ) ) {
$wp_filter[ $tag ] = new WP_Hook();
}
$wp_filter[ $tag ]->add_filter( $tag, $function_to_add, $priority, $accepted_args );
return true;
}