remove_action on after_setup_theme funktioniert nicht mit dem untergeordneten Thema


17

Ich versuche, eine Themenaktion für ein elegantes Thema mithilfe eines untergeordneten Themas zu entfernen. Dies funktioniert, wenn ich die Aktion nach dem add_action-Code an einer beliebigen Stelle in der übergeordneten Themafunktionen.php entferne. Es funktioniert jedoch nicht, wenn ich es aus der child theme functions.php hinzufüge.

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

Aktion entfernen hat die gleiche Priorität 10 wie die Aktion hinzufügen. Sollte es nicht funktionieren?

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

Antworten:


25

Wie @cybmeta bereits betont hat, sind Sie mit Ihrer Entfernung zu früh. Sie müssen also die eigentliche Entfernung verschieben, zum Beispiel so:

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

Hat funktioniert! Ich habe etwas ähnliches versucht, aber mein schlechtes! Da ich mit has_action eine Bedingung gesetzt habe , um eine noch nicht existierende Aktion in child functions.php zu überprüfen, funktionierte sie vor remove_action nicht !! Danke vielmals! 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

Die Datei functions.php der untergeordneten Themen wird direkt vor der Datei functions.php des übergeordneten Themas geladen. Wenn Sie remove_actionalso ein untergeordnetes Thema ausführen , ist die Aktion, die Sie entfernen möchten, nicht vorhanden, da sie später hinzugefügt wird.


1
..aber nicht Priorität 10 und der Hook after_setup_theme sollte sich darum kümmern? Wie soll ich das überhaupt machen?
Smoking Sheriff

Nein, das Prioritätsargument ist nicht dafür. Sie können einfach nichts entfernen, was nicht existiert. Mit anderen Worten, (aus dem Codex entnommen ) Sie können die Aktion nicht erfolgreich entfernen, bevor sie hinzugefügt wurde.
Cybmeta

1
Wie ist es also möglich, eine vom übergeordneten Thema festgelegte Aktion zu entfernen?
Aerendir

1

Versuchen Sie (ändern Sie einfach die Namen):

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);
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.