繁体   English   中英

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

[英]Wordpress remove action declared in parent theme in hook function

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

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需要与add action 具有相同的签名,所以请保持优先级相同。 如果 add 调用没有上述优先级(所以它的默认优先级为 10),请保持 remove 调用相同。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM