应用过滤器在WordPress中是如何工作的?

时间:2018-07-19 作者:I am the Most Stupid Person

我怎么知道的do_action 在WordPress中工作。

function foobar_func( $atts ){
    // Action hook before any output!
    do_action( \'dr_before_get_qod_text\' );

    echo "foo and bar";

}
add_shortcode( \'foobar\', \'foobar_func\' );
如果我有类似的代码,我可以显示"ABC" 显示前"foo and bar" 使用以下代码。

function display_abc() {
   echo "ABC";
}
add_action( \'dr_before_get_qod_text\', \'display_abc\');
但我不明白怎么做apply_filters 工作你能给我举个实际的例子吗?

1 个回复
SO网友:maverick

是的,当您遇到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’)。

就是这样。希望你现在明白了。

结束

相关推荐

使用Apply_Filters帮助输出POST类

我不熟悉脚本,这是一个插件,我想修改它来输出post类。当我尝试使用时:apply_filters( \'post_class\', $page->post_class ) it仅输出array=\" \". 我是否需要一个附加函数来连接到post类?在我的研究中,我无法判断我的语法是否错误,或者我在类中缺少了一个要“拉”的函数apply_filters 抓住。非常感谢你的帮助。 var $db_fields = array (\'parent\' => \'post_parent\',