remove_action no after_setup_theme não está funcionando do tema filho


17

Estou tentando remover uma ação de tema para um tema de temas elegantes usando um tema filho. Isso funciona quando removo a ação após o código add_action em qualquer lugar do tema pai functions.php. No entanto, ele não funciona quando o adiciono do tema filho functions.php.

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

A ação de remoção tem a mesma prioridade 10 que a ação de adição. Não deveria funcionar?

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

Respostas:


25

Como @cybmeta já apontou, você é muito cedo com sua remoção. Portanto, você deve adiar a remoção real, por exemplo:

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' );
}

Trabalhou! Eu tenho tentado algo semelhante, mas o meu mal! Desde que eu coloquei uma condição usando has_action para verificar uma ação ainda inexistente em child functions.php, antes de remove_action não estava funcionando !! Muito obrigado! 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);
Smoking Sheriff

3

O arquivo functions.php dos temas filhos é carregado logo antes do tema pai functions.php; portanto, quando você executa remove_actionno tema filho, a ação que você está tentando remover não existe porque é adicionada posteriormente.


1
..mas não a prioridade 10 e o gancho after_setup_theme deve cuidar disso? Como devo fazer isso de qualquer maneira?
Smoking Sheriff

Não, o argumento da prioridade não é para isso. Simplesmente você não pode remover algo que não existe. Em outras palavras, (extraído do codex ), você não pode remover com êxito a ação antes que ela tenha sido adicionada.
cybmeta

1
Então, como é possível remover uma ação definida pelo tema pai?
Aerendir 27/05

1

Tente (apenas mude os nomes):

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);
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.