php apply filters,WordPress学习——apply_filters()详解

WordPress2.png

前两天学习了 add_filters() 函数,详见>>> WordPress学习——add_filter()详解 ,今天趁热打铁再来学习下它的使用。一般情况下 add_filters() 有两种方式触发,一种是当程序运行到特定时候 WordPress 程序会判断用户是否对某些参数做了新的定义,如果有则优先使用用户的设置;另一种方式是,用户可以直接通过 apply_filters() 函数直接调用。代码示例如下:

// 预定义的过滤器回调函数

function example_callback( $string, $arg1, $arg2 ) {

// (maybe) modify $string

return $string;

}

add_filter( 'example_filter', 'example_callback', 10, 3 );

// 通过 apply_filters() 传参调用定义好的过滤器回调函数

$value = apply_filters( 'example_filter', 'filter me', $arg1, $arg2 );

apply_filters() 有两个固定参数以及其他我们需要传递给过滤器回调函数的参数,其调用方法如下所示:

apply_filters( string $tag, mixed $value,$var,... )

$tag:必填(字符串)。过滤器钩子的名称。

$value:必填(混合)。可以被过滤器函数修改的值要过滤的值,如果没人过滤则直接返回这个值。

$var:可选(混合)传给过滤函数的额外的参数,辅助过滤函数对返回值进行操作,可以添加无限个。

最后,apply_filters() 函数定义在 wp-includes/plugin.php 文件中,具体代码如下:

function apply_filters( $tag, $value ) {

global $wp_filter, $wp_current_filter;

$args = array();

// Do 'all' actions first.

if ( isset($wp_filter['all']) ) {

$wp_current_filter[] = $tag;

$args = func_get_args();

_wp_call_all_hook($args);

}

if ( !isset($wp_filter[$tag]) ) {

if ( isset($wp_filter['all']) )

array_pop($wp_current_filter);

return $value;

}

if ( !isset($wp_filter['all']) )

$wp_current_filter[] = $tag;

if ( empty($args) )

$args = func_get_args();

// don't pass the tag name to WP_Hook

array_shift( $args );

$filtered = $wp_filter[ $tag ]->apply_filters( $value, $args );

array_pop( $wp_current_filter );

return $filtered;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值