remove_action su after_setup_theme non funziona dal tema figlio


17

Sto cercando di rimuovere un'azione a tema per un tema a temi eleganti usando un tema figlio. Questo funziona quando rimuovo l'azione dopo il codice add_action in qualsiasi punto del tema padre funzioni.php. Tuttavia, non funziona quando lo aggiungo da funzioni figlio.php.php.

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

Rimuovi azione ha la stessa priorità 10 dell'azione aggiunta. Non dovrebbe funzionare?

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

Risposte:


25

Come già sottolineato da @cybmeta, sei troppo presto per la tua rimozione. Quindi devi rimandare la rimozione effettiva, ad esempio in questo modo:

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

Lavorato! Ho provato qualcosa di simile, ma il mio male! Dato che ho messo una condizione usando has_action per controllare un'azione ancora inesistente in funzioni figlio.php , prima di remove_action non funzionava !! Molte grazie! 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);
Fumando lo sceriffo il

3

Il file Functions.php dei temi figlio viene caricato subito prima del tema principale funzioni.php, quindi quando si esegue il remove_actiontema figlio, l'azione che si sta tentando di rimuovere non esiste perché viene aggiunta in seguito.


1
..ma la priorità 10 e l'hook after_setup_theme non dovrebbero occuparsene? Come dovrei farlo comunque?
Fumando lo sceriffo il

No, l'argomento prioritario non è per questo. Semplicemente non puoi rimuovere qualcosa che non esiste. In altre parole, (preso dal codice ) non è possibile rimuovere correttamente l'azione prima che sia stata aggiunta.
Cybmeta,

1
Quindi, come è possibile rimuovere un'azione impostata dal tema principale?
Aerendir,

1

Prova (basta cambiare i nomi):

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);
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.