Ankerlink an den Anfang der Seite
801 5676
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 27. August 2021, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Derzeit verwende ich sehr gerne das Theme „Kadence“ von KadenceWP. Im Großen und Ganzen ist es flexibel genug, sodass ich selten Filter und Hooks bemühen muss, um zu überschreiben, was seitens des Themes vorgesehen ist.

Mit der WooCommerce-Erweiterug allerdings mischt sich das Theme doch etwas zu viel ein.

Eine Action die in einer Funktion definiert wurde zu entfernen geht leicht:

remove_action( 'any_wordpress_action', 'defined_function_to_remove' );

Wenn remove_action oder remove_filter aufgerufen werden, berechnet WordPress die Kennung des zu entfernenden Callbacks anhand der an diese Funktionen übergebene Priorität und Argumente. Entsprechend entfernt es registrierte Hooks für das jeweilige Tag.

Aus diesem Grund ist es am besten, remove_action / remove_filter genau die Argumente (Tag, Callback und Priorität) zu übergeben, die zum Hinzufügen des Hooks verwendet wurden, um sicher zu sein, dass das Entfernen erfolgreich ist.

add_action( 'any_wordpress_action', 'defined_function_to_remove' , 12); 

remove_action( 'any_wordpress_action', 'defined_function_to_remove' , 12);

Um eine Action loszuwerden, die innerhalb einer Klasse definiert wurde, geht man folgendermaßen vor:

remove_action( 'any_wordpress_action', array( 'name_der_klasse', 'defined_function_to_remove' ));

Etwas Schwieriger wird es allerdings, wenn Namespaces im Spiel sind. Hier gilt es, den Aufbau zu erforschen um herauszufinden, wie die Klassen innerhalb derer ein Hook oder eine Action definiert wurden, angesprochen werden können.

So war es mir mit einer störenden WooCommerce-Action im Kadence Theme ergangen, die ich mit folgender „Gegenaktion“ aufhob.

Kadence Theme

Hier gelangt man an die Klasse innerhalb derer sich der zu entfernende Filter oder Hook befindet über eine Instanz der 'Kadence\Theme' Klasse, genauer gesagt über die Klasse Theme innerhalb des Kadence Namespaces. Die Struktur für alle einbeziehenden Plugins ist immer gleich, so dass immer auf die gleiche Weise vorgegangen werden kann. Man braucht nur den Namen der Komponente ändern, die angesprochen werden soll, z.B. components['woocommerce'].

add_action( 'init', 'my_child_remove_parent_action' );
function my_child_remove_parent_action() {
  if ( class_exists( 'Kadence\Theme' ) ) {
        $parent_theme_class = Kadence\Theme::instance();
        remove_action( 'woocommerce_before_cart_table', array( $parent_theme_class->components['woocommerce'], 'cart_summary_title' ) );
    }
} );
add_action( 'init', function() {
  if ( class_exists( 'Kadence\Theme' ) ) {
        remove_action( 'woocommerce_before_cart_table', array( Kadence\Theme::instance()->components['woocommerce'], 'cart_summary_title' ) );
    }
} );

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.