是的,当您遇到apply\\u filters()钩子时,它一开始有点让人困惑。我会尽我所能解释这一点:
首先,您需要知道过滤器挂钩允许您在显示或存储数据之前更改数据。
让我们举个例子
function list_array(){
$arr_name = [\'val1\', \'val2\', \'val3\'];
return $arr_name;
}
正如您所看到的,上面的函数只返回一个数组,并认为此代码在您的插件中,您希望其他开发人员修改默认数组。那就是
apply_filters()
钩子派上用场了
function list_array(){
$arr_name = [\'val1\', \'val2\', \'val3\'];
$arr_name = apply_filters( \'hook_identifier\', $arr_name);
return $arr_name;
}
现在可以使用“hook\\u identifier”修改数组值,如
function add_extra_val( $arr ){
$extra_val = [\'extraval1\',\'extraval2\',\'extraval3\']; //remember you are adding elements to array
$arr = array_merge($extra_val, $arr);
}
add_filter(\'hook_identifier\', \'add_extra_val\');
您可以看到add\\u extra\\u val函数将一个数组(作为每个过滤器挂钩)作为参数,然后将额外的值添加到该数组中,然后返回。
那么apply\\u filters()hook到底做了什么呢
它调用在代码库中的该点(在本例中为$arr\\u name=apply\\u filters(\'hook\\u identifier\',$arr\\u name))已添加到挂钩(在本例中为‘hook\\u identifier’)的所有函数(在本例中为‘add\\u extra\\u val’)。
就是这样。希望你现在明白了。