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

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

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

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

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

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

P.S. Код родительской темы не трогаем.
  • Вопрос задан
  • 2741 просмотр
Подписаться 1 Оценить Комментировать
Решение пользователя Дамир Рысаев К ответам на вопрос (2)
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, который не смог написать на тостер, но написал решение мне на почту.
Ответ написан