描述
此函数调用连接到过滤器钩子$hook_name
的所有函数。只需调用此函数,使用$hook_name
参数作为新钩子的名称,就可以创建新的过滤器挂钩。
该函数还允许将多个附加参数传递给钩子。
用法示例:
// 过滤器回调函数 function example_callback( $string, $arg1, $arg2 ) { // (可能) 修改 $string. return $string; } add_filter( 'example_filter', 'example_callback', 10, 3 ); /* * 通过调用 'example_callback()' 函数,应用过滤器 * 上面钩住了 `example_filter` * * - 'example_filter' 是过滤器钩子名称 * - 'filter me' 被过滤的值 * - $arg1 和 $arg2 是传递给回调函数的附加参数 $value = apply_filters( 'example_filter', 'filter me', $arg1, $arg2 );
参数
- $hook_name
-
(string)(必填) 过滤器钩子的名称。
- $value
-
(mixed)(必填) 要过滤的值。
- $args
-
(mixed)(必填) 传递给回调函数的其他参数。
返回
(mixed) 所有钩子函数应用于过滤后的值。
源码
更新日志
版本 | 描述 |
---|---|
6.0.0 | 通过将...$args 参数添加到函数签名中,将其形参化。 |
0.71 | 开始引入 |
使用示例
过滤后的回显
echo apply_filters( $tag, $value );
过滤
$myvar = apply_filters( $tag, $value );
附加过滤器参数
$myvar = apply_filters( $tag, $value, $param, $otherparam );
例如:
$myvar = apply_filters( 'example_filter', 'filter me', 'arg1', 'arg2 ');
使用the_title过滤器
$my_custom_title = apply_filters('the_title', ' My Custom Title (tm) '); $my_custom_title will now contain 'My Custom Title ™', since the_title filter applies wptexturize() and trim(), among others.
一个容易忽略的基本参数是指定参数的数量。大多数过滤器只有一个参数,因此人们从
add_filter
中删除该参数。下面的
3
非常重要。add_filter( 'example_filter', 'example_callback', 10, 3 );
否则会出现以下错误,例如此StackOverflow问题(http://stackoverflow.com/questions/24198086/missing-argument-2-for-the-function-in-wordpress):
example_callback()缺少参数2
通过阅读此函数的定义和描述,不明显的一点是,如果
add_filter( 'filter_name', 'filter_function' )
在代码中从来都不是被调用/执行的,则默认情况下apply_filters( 'filter_name', $value )
的使用将返回$value
值。我注意到在我的主题的
functions.php
文件中有一个对apply_filters( 'my_filter', ... )
的调用,在其他任何地方都找不到类似add_filter( 'my_filter', ... )
的调用,我对此感到很困惑(我还在为过滤器/钩子的问题伤脑筋)。说明中的第二行在技术上不正确:
“只需调用此函数,就可以创建新的过滤器挂钩…”
apply_filters
不创建筛选器挂钩。阅读https://stackoverflow.com/q/72161547/3429430详细信息