我对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;
这与我期待的测试出现时的测试相呼应。我是理解错了还是代码有问题?
最合适的回答,由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;