• Zur Hauptnavigation springen
  • Skip to main content
  • Zur Hauptsidebar springen
  • Zur Fußzeile springen
Thx Cool

Thx Cool

  • Softwareentwicklung
  • SEO
  • Content Marketing
  • Hosting
  • Beratung
  • Bibliothek
    • WordPress
    • Genesis
    • MacOS
    • Linux
    • Python
    • Magento
    • Sicherheit
    • SEO

Leitfaden zum Überschreiben von Funktionen in Deinem Child Theme

22. November 2018 von Kai Hagemeister

Funktionen eines Themes in Deinem Child-Theme zu überschreiben ist ganz einfach. WordPress bietet Dir dafür drei Möglichkeiten. Welche für Dich in Frage kommt, bestimmt die Umsetzung Deines Parent Themes.

Voraussetzung zum Überschreiben der Funktionen eines Themes ist das Anlegen eines Child-Themes, das alle Eigenschaften des Themes erbt. Solltest Du noch kein Child-Theme angelegt haben, kannst Du das mit dieser Anleitung nachholen: Child Theme erstellen.

Hast Du bereits ein Child-Theme, wirst Du wissen, dass Du Templates wie single.php ganz einfach überschreiben kannst, indem Du sie in das Verzeichnis Deines Child-Themes kopierst. Dort kannst Du sie beliebig anpassen. Mit Funktionen ist das nicht viel schwerer. Allerdings hängt die Art wie Du sie überschreibst ganz davon ab, wie sie im Theme implementiert wurde.

Funktionen in WordPress Themes

In WordPress stehen Dir jederzeit alle Funktionen eines Parent-Themes im Child-Theme zur Verfügung. Du musst also nichts dafür tun, um auf sie zugreifen zu können. Allerdings werden die Funktionen in einer strikten Reihenfolge geladen. Zuerst die Funktionen aus Deinem Child-Theme, dann die des Parent-Themes.

Kopierst Du eine Funktion aus Deinem Parent-Theme, dem anzupassenden Eltern-Theme, in die functions.php Deines ChildThemes, ist diese zwei mal vorhanden. Da die Funktion Deines Parent-Themes später geladen wird, überschreibt sie die kopierte Funktion in Deinem Child-Theme. Das kannst Du verhindern, indem Du der kopierten Funktion in Deinem Child-Theme eine geringere Priorität übergibst. Sie also erst nach der Funktion des Parents geladen wird. Daneben es noch zwei weitere Möglichkeiten, Funktionen zu überschreiben.

Drei Arten Funktionen zu überschreiben

  1. Funktionen vom Hook löschen
  2. Funktion mit niedriger Priorität überschreiben
  3. Austauschbare Funktionen überschreiben

Welche Art zum Überschreiben der Funktion Du wählst, hängt von der Implementierung der Funktion ab.

Wird die Funktion mit dem Aufruf add_action an einen Hook gehängt, musst Du sie mit remove_action vom Hook löschen.
Befindet sich die Funktion in einer IF-Abfrage, kannst Du sie einfach überschreiben.

Funktion vom Hook löschen

Wer sich mit den Kernfunktionen von WordPress auseinander setzt, oder ein Framework wie Genesis nutzt, wird Action- und Filter aufrufe kennen. Mit ihnen werden Funktionen an einen Hook gebunden, von ihm entfernt, verändert oder ausgeführt.

Wurde eine Funktion mit add_action an einen Hook gebunden, gibt es zwei Wege, sie zu überschreiben. Du kannst sie entfernen und anschliessend Deine eigene als Ersetzung an den Hook anhängen, oder sie mit einem Filter direkt ändern. Letztere Variante ist nur möglich, wenn ein Filter zum Überschreiben bereitgestellt wurde.

Als Beispiel führe ich hier die Funktion eines Themes an, in welcher der Footer des Themes generiert wird.


function parent_footer_content() {
 echo $footer_content;
}
add_action('theme_footer', 'parent_footer_content');

Die Funktion parent_footer_content() erstellt den Inhalt des Footers. Anschliessend wird sie mit add_action an den Hook ‚parent_footer‘ übergeben.

Diese Funktion löschen wir, indem wir exakt den selben Aufruf von add_action übernehmen und add_action durch remove_action ersetzen. Wobei remove_action dem Hook ‚init‘ angehängt wird. Warum? Weil init erst feuert, wenn bereits alle Funktionen geladen wurden und wir nur eine Funktion löschen können, die bereits an einen Hook angehängt wurde.

Die Löschung der Funktion parent_footer_content erfolgt korrekt durch folgenden Aufruf:


function remove_parent_footer_content(){
     remove_action( 'theme_footer', 'parent_footer_content' );
}

add_action('init', 'remove_parent_footer_content');

Wir haben eine Funktion „remove_parent_footer_content()“ erstellt. Der Name sollte bezeichnend sein, kann aber frei gewählt werden. Darin führen wir unseren remove_action Aufruf aus. Anschliessend hängen wir unsere Löschfunktion an den Hook ‚init‘. Damit ist die Funktion entfernt.

Wir wollten sie jedoch nicht entfernen, sondern überschreiben. Deshlab erstellen wir unsere Funktion, die den Inhalt des Footers erzeugt und fügen sie dem Hook ‚theme_footer‘ erneut hinzu.


function child_footer_content() {
 echo $footer_content;
}
add_action('theme_footer', 'child_footer_content');

Geht es darum, Funktionen bzw. Funktionsausgaben zu ändern, bietet es sich an, zuvor nachzusehen, ob ein Filter existiert. Ein Filter erlaubt die Änderung der Funktion, ohne sie löschen und anschliessend wieder hinzufügen zu müssen. Ein Beispiel zur Überschreibung des Titles für die Fehlerseite beim Framework Genesis:


add_filter( 'genesis_404_entry_title', function(){return 'Seite nicht gefunden, Fehler 404';});

Die Funktion habe ich hier direkt als Argument übergeben. Solltest Du Dir nicht sicher sein, ob es einen Filter für die zu ändernde Funktion gibt, kannst Du nach apply_filter suchen.

Ein häufiger Fehler

Sollte sich Deine Funktion nicht von einem Hook löschen lassen, liegt das meist darn, dass der remove_action-Aufruf nicht exakt dem add-action-Aufruf gleicht. Wird beispielweise die Angabe der Priorität vergessen, obwohl sie bei add_action vom Standard 10 abweicht, scheitert der Versuch sie zu löschen. Im folgenden Beispiel würde die Löschung scheitern, weil es zwei verschiedene Prioritäten gibt, 25 und Standard 10.


add_action('hook', 'function', 25);
remove_action('hook', 'function');

Funktion mit niedriger Priorität überschreiben

In diesem Fall kannst Du Dir Dein bis jetzt erlangtes Wissen über Worpress zu Nutze machen. Du kopierst die Funktion in die functions.php Deines Child-Themes und übergibst ihr eine niedrigere Priorität, als die zu überschreibende Funktion. Wobei eine niedrige Priorität einer hohen Zahl entspricht. Ist in der zu überschreibenden Funktion keine Priorität angegeben, besitzt sie die Standardpriorität von 10.

Austauschbare Funktionen

Die wohl einfachste Variante. Die zu überschreibende Funktion befindet sich in einer IF-Abfrage. Es wird also geprüft, ob eine Funktion mit dem selben Namen bereits existiert. Ist das der Fall, wird die darin befindliche Funktion nie aufgerufen.

Sobald Du also eine Funktion mit gleichen Namen in die funtions.php Deines Child-Themes kopiert hast, wird die Funktion im Parent-Theme ignoriert. Du brauchst also nichts weiter machen, als die Funktion in die funktions.php Deines Child-Themes zu kopieren und dort Deinen Wünschen anzupassen.

Zusammenfassung

Die Art und Weise, wie Funktionen in einem Child-Theme überschrieben werden, hängt massgeblich von zwei Faktoren ab.

  1. Wie sind sie im Parent-Theme implementiert
  2. Möchte man die FUnktion löschen oder ändern

Funktionen die sich in einer IF-Abfrage befinden, können einfach in die functions.php Deines Child-Themes kopiert und dort geändert werden.

An einen Hook angehängte Funktionen müssen von diesem entfernt, neu angehängt, oder mit einem Filter geändert werden.

Du benötigst Hilfe bei der Anpassung Deiner WordPress-Seite. Dann schreibe mir.

Kategorie: Wordpress Stichworte: Funktionen überschreiben, Wordpress

Über Kai Hagemeister

Studium der Biologie. Anschliessendes Studium der Informatik. Seit 2009 betreibe ich mit meiner Familie einen kleinen Hof in den Thüringer Bergen. Ein Blog begleitet unsere Arbeit auf dem Berghof.

Leser-Interaktionen

Schreibe einen Kommentar Antworten abbrechen

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

Haupt-Sidebar

Bibliothek

  • Blog (2)
  • Linux (9)
  • MacOS (8)
    • Python (1)
  • Magento (5)
  • Netzwerk (2)
  • SEO (2)
  • Sicherheit (5)
  • Wordpress (16)
    • Genesis (5)

Neueste Beiträge

  • SIP deaktivieren
  • Firefox verbindet sich zu Cloudfront und Amazon
  • apsd Prozess unter MacOS deaktivieren
  • Firefox lässt sich nicht mehr starten
  • Wortmann Terra mobile kein AHCI

Lass Dir eine coole Webseite erstellen

THX bietet Dir alles was Du Dir für Deinen erfolgreichen Auftritt im Internet wünschst.

Kontakt aufnehmen
hosting

Lass Dir Deine coole Webseite von THX erstellen

Kontakt

Footer

Kontakt

  • Webseite
  • Email
  • Telephone

Navigation

  • Softwareentwicklung
  • SEO
  • Content Marketing
  • Hosting
  • Beratung
  • Blog

THX.cool

  • Impressum
  • Datenschutz
  • Cookie-Richtlinie (EU)

Newsletter

Copyright © 2023 Kai Hagemeister THX.cool

Cookie-Zustimmung verwalten
Wir verwenden Cookies, um unsere Website und unseren Service zu optimieren.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}