将功能或方法挂接到特定的过滤器操作。

说明

WordPress提供过滤器钩子,允许插件在运行时修改各种类型的内部数据。

插件可以通过将回调绑定到过滤器钩子来修改数据。当稍后应用过滤器时,每个绑定的回调按优先级顺序运行,并给出机会通过返回一个新值来修改值。

以下示例显示如何将回调函数绑定到过滤器钩子。

注意,$example传递给回调,(可能)被修改,然后返回:


function example_callback( $example ) {
    // Maybe modify $example in some way.
    return $example;
}
add_filter( 'example_filter', 'example_callback' );

绑定回调可以从none接受
在相应的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.

_Note:_无论回调是否有效,函数将返回true。由你来照顾。这是为了优化目的,所以一切尽可能快。

参数

$tag
(string) (必需) 将$ function_to_add回调挂钩到的过滤器的名称。
$ function_to_add
(可调用) (必需) 应用过滤器时要运行的回调。
$priority
(int) (可选) 用于指定与特定操作相关联的函数的执行顺序。较低的数字对应于较早的执行,具有相同优先级的功能按其添加到操作的顺序执行。
默认值:10
$ accepted_args
(int) (可选) 函数接受的参数数。
默认值:1

返回

(true)

文件:wp-includes / plugin.php

更多信息

Hooked函数可以使用匹配的do_action()或apply_filters()调用运行时设置的额外参数。例如,comment_id_not_found操作会将注释ID传递给每个回调。
虽然可以传递$ accepted_args的数量,但只能操作$值。其他参数只是提供上下文,并且它们的值不能被过滤器函数改变。
您也可以将类方法作为回调传递。
静态类方法:add_filter( 'media_upload_newtab', array( 'My_Class', 'media_upload_callback' ) );
实例方法:add_filter( 'media_upload_newtab', array( $this, 'media_upload_callback' ) );
您还可以传递一个匿名函数作为回调。例如:add_filter( 'the_title', function( $title ) { return '<strong>' . $title . '</strong>'; } );

示例

显示post的自定义长度。


if( ! function_exists( 'prefix_custom_excerpt_length' ) )
{
    function prefix_custom_excerpt_length( $length )
    {
        return 40;
    }
}
add_filter( 'excerpt_length', 'prefix_custom_excerpt_length', 999 );

默认情况下,WordPress显示57个字符。您可以使用上述代码设置自定义长度。这个时间除了长度将是40.它是一个很好的和最简单的使用add_filter。