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
Xerife de fumar
fonte

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

cybmeta
fonte
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);
}
T.Todua
fonte