remove Działaj na after_setup_theme nie działa z motywu potomnego


17

Usiłuję usunąć akcję motywu dla motywu eleganckich motywów za pomocą motywu potomnego. Działa to, gdy usuwam akcję po kodzie dodawania aktywności w dowolnym miejscu w nadrzędnym funkcjach.php. Jednak nie działa, gdy dodam go z funkcji motywu potomnego. Php.

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

Działanie usuwania ma taki sam priorytet 10, jak działanie dodawania. Czy to nie powinno działać?

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

Odpowiedzi:


25

Jak już zauważył @cybmeta, jesteś za wcześnie na usunięcie. Musisz więc odroczyć faktyczne usunięcie, na przykład tak:

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

Pracował! Próbowałem czegoś podobnego, ale moje złe! Ponieważ ustawiłem warunek za pomocą has46, aby sprawdzić wciąż nieistniejącą akcję w funkcjach potomnych. Php , przed usunięciem nie działała !! Wielkie dzięki! 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

Plik functions.php motywów potomnych jest ładowany bezpośrednio przed motywem macierzystym functions.php, więc po uruchomieniu remove_actionmotywu potomnego akcja, którą próbujesz usunąć, nie istnieje, ponieważ zostanie dodana później.


1
..Ale priorytet nie 10 i haczyk po_setup_theme powinien się tym zająć? Jak mam to mimo wszystko zrobić?
— Smoking Sheriff

Nie, argument pierwszeństwa nie jest po to. Po prostu nie możesz usunąć czegoś, co nie istnieje. Innymi słowy (wzięte z kodeksu ) nie można pomyślnie usunąć akcji przed jej dodaniem.
— cybmeta

1
Jak więc można usunąć akcję ustawioną przez motyw nadrzędny?
— Aerendir

1

Spróbuj (wystarczy zmienić nazwy):

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);
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.