Wordpress удалить действие, объявленное в родительской теме в функции ловушки - PullRequest
1 голос
/ 16 января 2020

Моя родительская тема печатает встроенные стили в заголовке. Один я хочу удалить. Внутри элементы управления. php in publi c function 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);

, но это не сработало.

1 Ответ

0 голосов
/ 16 января 2020

Основная проблема, описанная выше, заключается в том, что действие добавляется с использованием синтаксиса обратного вызова метода класса

array($this, 'display_customization'), поэтому вы не можете удалить его, используя непосредственно имя функции

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

Здесь вы можете найти реализацию remove_class_action и remove_class_filter, которая позволяет удалять действия и фильтры, созданные с использованием синтаксиса класса.

После того, как приведенный выше код используется в вашем проекте с использованием следующего синтаксиса:

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

Некоторые другие примечания:

remove_action и remove_class_action сверху должны иметь ту же подпись, что и действие добавления, поэтому, пожалуйста, оставьте приоритет таким же. Если вызов add не имеет приоритета, как указано выше (поэтому он имеет приоритет по умолчанию 10), оставьте вызов удаления таким же.

Другая проблема, с которой вы можете здесь столкнуться, заключается в том, чтобы убедиться, что вызовы remove_action или remove_class_action действительно вызываются после add_action.

В зависимости от того, где вызывается add_action, вам, возможно, придется поместить свой вызов remove в специфицированную c ловушку, чтобы убедиться, что вызов remove выполняется после вызова add.

...