Задать вопрос

Как удалить функцию из хука, если она добавляется в событие до удаления?

В родительской теме, есть код:
add_action( 'parent_theme_hook', 'foo_function' );
В дочерней теме, есть код:
echo remove_action( 'parent_theme_hook, 'foo_function' );  // false

Функция не удаляется. Дочерняя тема загружается раньше родительской. Значит и функция родительской темы ещё не прикрепилась к хуку.

Удалить надо, но никак.

Какие вы знаете хаки для решения этой проблемы?

P.S. Код родительской темы не трогаем.
  • Вопрос задан
  • 2741 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
freepad
@freepad Автор вопроса
function child_theme_name_remove_actions () {
    remove_action ( 'parent_theme_hook', 'foo_function' );
}
add_action ('init', 'child_theme_name_remove_actions');


Когда срабатывает хук init, родительская тема уже загружена.


Событие срабатывает после того, как WordPress полностью загружен, но до того, как любые header заголовки были отправлены.

init - это популярное событие. Обычно используется плагинами для инициализации себя. Этот хук удобен по многим причинам: например, нужно определять пользователя, нужны таксономии, нужны функции установленные в теме (файл functions.php или другой).

К моменту срабатывания init текущий пользователь авторизован (global $current_user уже определена) и установлены все основные глобальные переменные и функции WordPress. Также функции темы уже подключены и все установки установлены: размеры картинок миниатюр, поддержка меню и т.д.


За решение спасибо Kolya Korobochkin, который не смог написать на тостер, но написал решение мне на почту.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Попробуйте забинить функцию первым, если проверка в родительской на наличие функции стоит, то вы решите проблему.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы