我对Wordpress开发还很陌生,所以这个问题可能很愚蠢。可能是我不了解Wordpress中自定义过滤器的概念。到目前为止,我已经使用了Wordpress自己的过滤器挂钩来更改值,如下所示:
add_filter('the_content', 'ffl_add_footer') ; // add footer to the blog content
我刚刚开始学习可以编写代码的自定义过滤器。所以我的理解是,您使用apply_filters()设置了一个到值(以下$ var)的过滤器挂钩:
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;
在我期望 testingtestingappend 的同时,它呼应 testingtesting 。回调函数似乎根本没有被调用,因为我在callback内尝试过exit()。我是否理解这是错误的,还是我的代码有问题?
答案 0 :(得分:0)
问题是您在执行add_filter
后正在调用apply_filters
。您需要更早调用它,以便您的回调函数先注册,然后apply_filters
将执行它
例如(未经测试,但应该可以使用):
function callback($var){
return ($var.'append');
}
add_filter('custom_filter' , 'callback'); // register the callback
$var = 'testing';
echo $var; // testing
$var1 = apply_filters('custom_filter', $var); // apply registered callbacks
echo $var1; // testingappend