Custom filter not working

时间:2019-08-28 作者:Knownow

我对Wordpress开发非常陌生,所以这个问题可能很傻。可能是我不理解Wordpress中自定义过滤器的概念。到目前为止,我已经使用Wordpress自己的过滤器挂钩来更改值

add_filter(\'the_content\', \'ffl_add_footer\') ; // add footer to the blog content
我刚刚开始学习可以编写代码的自定义过滤器。所以我的理解是,您可以使用apply\\u filters()为如下值设置过滤器挂钩

apply_filters(\'filter_tag\' , $var ) ;
稍后,您将连接到该过滤器并使用回调函数修改值($var),如下所示

add_filter(\'filter_tag , \'callback\') 
您的回调如下所示:

function callback($var) {
//modify $var 
return $var

}
所以我用下面的代码来测试这种理解:

function callback($var){
    return ($var.\'append\');
}


$var = \'testing\';
echo $var;
$var1 = apply_filters(\'custom_filter\', $var);
add_filter(\'custom_filter\' , \'callback\');
echo $var1;
这与我期待的测试出现时的测试相呼应。我是理解错了还是代码有问题?

1 个回复
最合适的回答,由SO网友:Mike Baxter 整理而成

我相信你的例子的简单性可能导致了对方法的误解appy_filters() 将运行。有一个great article 这真的解释了如何使用add_filter()apply_filters() 嗯,使用非常可读的示例。

基本上,问题似乎是您的代码声明add_filter() 使用定义后add_filter(). 这是一个“操作顺序”错误。

或许此带注释的版本可以帮助:

// declare your filter function and callback .. usually pretty close to each other.
add_filter(\'ex1_append_text\', \'callback_appender\');
function callback_appender($initial_text){
    return $initial_text.\' ... whatever ...\';
}

// setup basic variable, as you did
$var = \'testing\';
echo $var;

// apply the filters we declared above
$modified = apply_filters(\'ex1_append_text\',$var);
echo $modified;