我有一个主题是通过jQuery添加自定义的全屏背景图像。主题是通过名为class
的{{1}}对象执行此操作。在类中是一个名为td_background
的函数,在此钩子中,正在为自定义bg添加一个过滤器。它看起来像这样:
wp_head_hook()
我现在正试图在我正在编写的自定义插件中取消注册class td_background {
// ..some stuff
function __construct() {
add_action('wp_head', array($this, 'wp_head_hook'), 10);
}
function wp_head_hook() {
add_filter( 'td_js_buffer_footer_render', array($this, 'add_js_hook'));
}
function add_js_hook($js) {
// Custom JS added here for background image
return $js
}
}
new td_background();
,但是我无法理解如何使用所有这些嵌套来完成它。我尝试了一些方法,例如:
add_js_hook
我也尝试将上述内容更改为<?php
// This...
remove_filter( 'wp_footer', array($td_background, 'td_js_buffer_footer_render'));
// ...and this
remove_filter( 'wp_footer', 'td_js_buffer_footer_render');
// ...and even
remove_filter( 'wp_footer', 'add_js_hook', 100);
?>
。
思考?我的最终目标是在页脚中取消注册此JavaScript,以便我可以添加自己的JavaScript代替它。
答案 0 :(得分:1)
由于它是匿名实例化的,我们必须使用WPSE中的便捷函数remove_anonymous_object_filter()
,它将类似于:
// Run this from a plugin
add_action( 'template_redirect', 'kill_anonymous_example', 0 );
function kill_anonymous_example() {
remove_anonymous_object_filter(
'wp_head',
'td_background',
'wp_head_hook'
);
}
我测试了wp_head
,因为我没有td_js_buffer_footer_render
正在运行。