Add_Filter()和Remove_Filter()的作用域和持久性是什么?

时间:2012-11-02 作者:Steve

我理解在主题函数中直接使用add\\u filter()或remove\\u filter()。除非您在其他地方重写这些更改,否则php将使这些更改在整个主题中都是全局的。但请相信这是WordPress初始化的结果。

add_filter( $tag, $function_to_add, $priority, $accepted_args );
但是,如果在函数或类中调用add\\u filter()或remove\\u filter():

function example(){
    ...
    add_filter( $tag, $function_to_add, $priority, $accepted_args );
    ...
}
变更的范围和持续性如何?

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

它总是全球性的。add_filter()add_action() 只是全局变量的包装器$wp_filter. 因此,函数在哪里调用并不重要。

这同样适用于apply_filters(), apply_filters_ref_array(), do_action_ref_array()do_action(): 它们在全局命名空间中工作,这就是回调处理程序(函数或方法)必须是公共的原因。无法从全局范围调用受保护的类方法。

结束

相关推荐

Ajax, filters and shortcodes

您能理解为什么我无法在ajax帖子包含中应用短代码过滤器吗?让我更好地解释一下:我已经设法在另一篇文章中包含一篇文章,通过admin-ajax.php, 正如著名的5 tips.很明显,我不想显示快捷码标签,也不想去掉它们,所以我在回应do_shortcode($post->post_content)此时,虽然我正在运行“Cleaner gallery”插件,但post gallery会被渲染,但未被过滤add_filter( \'post_gallery\', \'cleaner_gallery\