remove_action pentru after_setup_theme nu funcționează din tema copil

9 dec. 2014, 11:04:25
Vizualizări: 20.4K
Voturi: 21

Încerc să elimin o acțiune a temei pentru o temă elegant-themes folosind o temă copil. Funcționează când elimin acțiunea după codul add_action oriunde în fișierul functions.php al temei părinte. Cu toate acestea, nu funcționează când o adaug din fișierul functions.php al temei copil.

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

Remove action are aceeași prioritate 10 ca și add action. Nu ar trebui să funcționeze?

add_action( 'after_setup_theme', 'et_pb_setup_theme' ); // adăugarea acțiunii în tema părinte
0
Toate răspunsurile la întrebare 3
1
29

După cum a subliniat deja @cybmeta, înlăturarea ta este prea devreme. Prin urmare, trebuie să amâni înlăturarea efectivă, de exemplu astfel:

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' );
}
9 dec. 2014 11:29:15
Comentarii

A funcționat! Am încercat ceva similar, dar greșeala mea! Deoarece am pus o condiție folosind has_action pentru a verifica o acțiune încă inexistentă în functions.php al copilului, înainte de remove_action nu funcționa!! Mulțumesc mult!

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 dec. 2014 13:18:44
3

Fișierul functions.php al temelor copil este încărcat chiar înaintea fișierului functions.php al temei părinte, astfel încât atunci când folosești remove_action în tema copil, acțiunea pe care încerci să o elimini nu există deoarece este adăugată mai târziu.

9 dec. 2014 11:18:50
Comentarii

..dar prioritatea 10 și hook-ul after_setup_theme nu ar trebui să se ocupe de asta? Cum ar trebui să fac oricum?

Smoking Sheriff Smoking Sheriff
9 dec. 2014 11:21:12

Nu, argumentul de prioritate nu este pentru asta. Pur și simplu nu poți elimina ceva care nu există. Cu alte cuvinte (preluat din codex), nu poți elimina cu succes o acțiune înainte ca aceasta să fie adăugată.

cybmeta cybmeta
9 dec. 2014 11:38:58

Deci, cum este posibil să elimini o acțiune setată de tema părinte?

Aerendir Aerendir
27 mai 2017 18:21:33
0

Încearcă (doar schimbă numele):

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 iul. 2015 20:58:51