Wordpress удалить действие, объявленное в родительской теме в функции ловушки

Моя родительская тема печатает встроенные стили в заголовке. Один я хочу удалить. Внутри controls.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 "
<!-- Begin Theme Custom CSS -->
<style type="text/css" id="" . WPZOOM::$theme_raw_name . "-custom-css">
";
            echo $css;
            echo "
</style>
<!-- End Theme Custom CSS -->
";
        }
    }

Это добавляет встроенный стиль с id = "foodica-pro-custom-css"

Я старался

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

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

Всего 1 ответ


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

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

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

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


Есть идеи?

10000