美图欣赏 | 设为首页 | 加入收藏 | 网站地图

当前位置:电脑中国 > 编程 > PHP教程 >

apply_filters 和 add_filter的关系是什么,怎么使用?

2020-02-14 12:46|来源:未知 |作者:dnzg |点击:

使用wordpress一段时间了,一直没弄明白 add_filter 和 apply_filters 的关系是什么 , 有什么用。今天遇到了一个问题,查看了一些源代码,似乎理解了。记录下来作为笔记。

 

直观的理解  add_filter 和 apply_filters

  1. apply_filters 执行过滤操作,并且返回过滤后的值
  2. add_filter 增加一个过滤动作

函数的原型

add_filter( string $tag, callable $function_to_add, int $priority = 10,int $accepted_args = 1 )
apply_filters( string $tag, mixed $value ,[ ...] )

apply_filters 后面可以写更多的参数。

一个简单的示例

function addx($s) { return $s . '-x'; }
function addy($s, $more) { return $s . '-y :' . $more; }

function addz($s) { return $s . '-z'; }

add_filter('my_string', 'addx');
add_filter('my_string', 'addy', 10, 2);

$ans = apply_filters('my_string', 'string', 'more');
add_filter('my_string', 'addz');
var_dump($ans); //  string(16) "string-x-y :more"

# 查看钩子
var_dump($wp_filter['my_string']->callbacks);

add_filter 是增加一个钩子,并不执行。直到执行到apply_filters 的是时候,开始执行。增加的钩子可以是一个或者多个。所有 add_filter  负责增加钩子,apply_filters 负责运行这些钩子上的函数,并提供相关的参数。apply_filters 可以提供多个参数,至于需要几个在 add_filter 中第四个参数进行说明。

查看钩子

var_dump($wp_filter['my_string']->callbacks);

 

wordpress钩子
(责任编辑:dnzg)
相关阅读