WordPress删除在钩子函数中的父主题中声明的操作



我的父主题在标题中打印内联样式。我想删除的一个。 在控件内部.php公共函数 hook((中:

add_action( 'wp_head', array($this, 'display_customization') );

此函数如下所示:

public function display_customization()
{
do_action('zoom_customizer_display_customization_css', $this->get_css_rules());
$css = zoom_customizer_get_css()->build();
if (!empty($css)) {
echo "n<!-- Begin Theme Custom CSS -->n<style type="text/css" id="" . WPZOOM::$theme_raw_name . "-custom-css">n";
echo $css;
echo "n</style>n<!-- End Theme Custom CSS -->n";
}
}

它添加了内联样式 id="foodica-pro-custom-css">

我试过了

remove_action( 'wp_head','display_customization', 120);

它没有用。

上面的主要问题是使用类方法回调语法添加操作

array($this, 'display_customization'),因此您无法直接使用函数名称将其删除

https://gist.github.com/tripflex/c6518efc1753cf2392559866b4bd1a53

在这里,您可以找到remove_class_actionremove_class_filter的实现,这些实现允许您删除使用类语法创建的操作和筛选器。

在项目中使用以下语法具有上述代码后:

remove_class_action('wp_head', 'NameOfClassThatThisRefersToInControlsFile', 'display_customization');

其他一些需要注意的事项:

上面的remove_actionremove_class_action需要具有与添加操作相同的签名,因此请保持优先级相同。如果添加调用没有上述优先级(因此默认优先级为 10(,请保持删除调用不变。

您可能在此处遇到的另一个问题是确保remove_action或remove_class_action调用实际上是在add_action之后调用的。

根据调用add_action的位置,您可能必须将 remove 调用放在特定的钩子中,以确保在 add 调用后执行 remove 调用。

最新更新