remove_action su after_setup_theme non funziona dal tema child

9 dic 2014, 11:04:25
Visualizzazioni: 20.4K
Voti: 21

Sto cercando di rimuovere un'azione del tema da un tema elegant-themes utilizzando un tema child. Questo funziona quando rimuovo l'azione dopo il codice add_action ovunque nel functions.php del tema genitore. Tuttavia, non funziona quando lo aggiungo dal functions.php del tema child.

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

Remove action ha la stessa priorità 10 dell'add action. Non dovrebbe funzionare?

add_action( 'after_setup_theme', 'et_pb_setup_theme' ); // add_action del tema genitore
0
Tutte le risposte alla domanda 3
1
29

Come ha già sottolineato @cybmeta, stai rimuovendo troppo presto. Quindi devi posticipare 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() {
    // Rimuove l'azione del tema genitore
    remove_action( 'after_setup_theme', 'et_pb_setup_theme' );
}
9 dic 2014 11:29:15
Commenti

Ha funzionato! Stavo provando qualcosa di simile, ma per colpa mia! Dato che avevo messo una condizione usando has_action per verificare un'azione ancora inesistente nel functions.php del child, prima di remove_action non funzionava!! Grazie mille!

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 Smoking Sheriff
9 dic 2014 13:18:44
3

Il file functions.php dei child theme viene caricato subito prima del functions.php del tema genitore, quindi quando esegui remove_action nel child theme, l'azione che stai cercando di rimuovere non esiste perché viene aggiunta successivamente.

9 dic 2014 11:18:50
Commenti

..ma la priorità 10 e l'hook after_setup_theme non dovrebbero occuparsene? Come dovrei fare comunque?

Smoking Sheriff Smoking Sheriff
9 dic 2014 11:21:12

No, l'argomento della priorità non serve a quello. Semplicemente non puoi rimuovere qualcosa che non esiste. In altre parole (preso dal codex) non puoi rimuovere con successo un'azione prima che sia stata aggiunta.

cybmeta cybmeta
9 dic 2014 11:38:58

Quindi, come è possibile rimuovere un'azione impostata dal tema genitore?

Aerendir Aerendir
27 mag 2017 18:21:33
0

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);
}
28 lug 2015 20:58:51