видалити запускання на after_setup_theme не працює від дочірньої теми


17

Я намагаюся видалити дію теми для елегантної теми за допомогою дочірньої теми. Це працює, коли я видаляю дію після додавання коду завантаження в будь-якому місці батьківської теми function.php. Однак це не працює, коли я додаю його з дочірньої теми function.php.

remove_action ('after_setup_theme', 'et_pb_setup_theme' , 10);

Дія видалення має той самий пріоритет 10, що і дія додавання. Чи не повинно це працювати?

add_action( 'after_setup_theme', 'et_pb_setup_theme' ); //parent theme add_action

Відповіді:


25

Як уже зазначав @cybmeta, ви занадто рано зі своїм видаленням. Отже, ви повинні відкласти фактичне видалення, наприклад, так:

add_action( 'after_setup_theme', 'wpdev_170663_remove_parent_theme_stuff', 0 );

function wpdev_170663_remove_parent_theme_stuff() {

    remove_action( 'after_setup_theme', 'et_pb_setup_theme' );
}

Працювали! Я пробував щось подібне, але моє погано! Оскільки я поставив умову за допомогою hasgery для перевірки ще неіснуючої дії в дочірнім function.php, перед видаленням він не працював !! Дуже дякую! function etn(){ if(has_action('after_setup_theme', 'et_pb_setup_theme')){ remove_action ('after_setup_theme', 'et_pb_setup_theme' ); } } add_action ('after_setup_theme', 'etn', 9);
Шериф для паління

3

Файл function.php дочірніх тем завантажується безпосередньо перед батьківською темою function.php, тому при запуску remove_actionв дочірній темі дія, яку ви намагаєтеся видалити, не існує, оскільки вона додається пізніше.


1
..але не пріоритет 10, і гачок after_setup_theme повинен подбати про це? Як мені це зробити в будь-якому випадку?
Куріння шерифа

Ні, аргумент пріоритету не для цього. Просто ви не можете видалити щось, що не існує. Іншими словами, (взято з кодексу ), ви не можете успішно видалити дію до її додавання.
cybmeta

1
Отже, як можна видалити дію, встановлену батьківською темою?
Aerendir

1

Спробуйте (просто змініть назви):

add_action( 'init' , 'myyy_remove' , 15 );
function myyy_remove() {
        remove_action('ACTION_NAME', 'my_function_name_Something'   ,11);
        remove_action('ACTION_NAME', 'my_function_name_Another'     ,11);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.