WordPress Hooks einsetzen und selber erstellen

Einfache Anpassungen sind in WordPress inzwischen über den Customizer möglich. Doch es gibt noch eine Welt hinter der Basismethode. Mit etwas PHP- Know-­how können Seitenbetreiber das Theme detailreicher anpassen, ohne gleich zu stark im Code herumzufuhrwerken. Viele Themes bieten Pluggable Functions und Hooks­Points für Actions und Filter.

Wie werden Hooks genutzt?

Hooks sind in WordPress Action­Hooks, die mit do_action(), mit Filter­Hook, oder mit add_Filter() angesprochen werden. Das Action­Hook fügt zusätzlichen Code an den Einhängepunkt ein. Das Filter­Hook erlaubt es die vorhandene Ausgabe zu manipulieren, ähnlich der aus PHP bekannten str_replace-Funktion. Zusätzlich können Action­ und Filter­Hooks zugeordnete Funktionen über remove_action bzw. remove_filter entfernt werden.

Implementiert wird die eigene Funktion, die in den Hook eingehängt werden soll, in der functions.php. Sofern man als WordPress­Theme keine Eigen-­ oder Individualentwicklung nutzt, sollte die functions.php des Child­Themes genutzt werden.

Hinweis: Einen Unterschied zwischen remove_filter und remove action gibt es nicht. Die Funktion remove_action ist ein Alias für remove_filter. Entsprechend könnte eine Action auch mit remove_filter von einem Hook-
Point entfernt werden.

Wie kann ich Hooks in meinem Theme finden?

Um herauszufinden, welche Hooks in einem Theme verwendet werden, gibt es einen kleinen Trick. Mit etwas Code in der functions.php kann man sich die Hooks listen lassen:

Welche Hooks gibt es?

WordPress unterscheidet zwischen zwei verschiedenen Hook­-Typen: Das eine ist das Action­-Hook, das andere das Filter-­Hook.

Action­Hooks

Action­Hooks sind Andockpunkte, an denen etwas eingefügt werden kann. Im Core erkennt man diese durch do_action() oder do_actions_ref_array(). Die Funktion do_action hat zwei Parameter: $tag – ein Label und $arg die Argumente des Hooks. Über dieses Paar kann dem Einhängepunkt eine Funktion mit Parametern zugeordnet werden. Diese wird ausgeführt, wenn der PHP­-Interpreter den Code durchläuft. Die Funktion ermöglicht das Injizieren von weiterem Code an der Stelle des Platzhalters.

 

Die Andockstellen für Action­Hooks sind alle Punkte, an denen die Entwickler vom WordPress Core ein do_action(); oder ein do_actions_ref_array(); platziert haben.

Filter­Hooks

Filter­Hooks erlauben das Filtern von Variablen in WordPress. So können leicht Daten manipuliert, also abgeändert, werden. Der Begriff Filtern ist dabei weit zu fassen: Es ist möglich, Daten hinzuzufügen, herauszufiltern oder Inhalte zu ersetzen. Für Filter­Hooks gibt es eine Reihe von Beispielen. Das Abändern des Headers zum Einfügen von Metadaten erfolgt in der Regel über ein Filter-Hook. In der functions.php oder im Code eines Plugins ist der Aufruf eines Filter leicht am add_filter() zu erkennen.

Die Möglichkeiten, mit dem Filter­Hook zu arbeiten, sind in WordPress sehr weitreichend. Beispielsweise kann ein Filter auf the_content angewendet werden. So lässt sich der komplette Inhalt eines Blogbeitrages modifizieren.

Welchen Hook-Typ wann einsetzen?

Eine pauschale Aussage ist dabei schwer zu treffen, doch im Allgemeinen kann man sich an folgendes halten:

• Mit Action­Hooks fügt man Seiten Elemente wie Stylesheets oder JavaScript hinzu und kann interaktive Aktionen wie das Senden einer Mail durch ein Event auslösen.

• Mit Filter­Hooks werden zur Anzeige bestimmte Daten aus der Datenbank verändert, bevor diese vom Server an den Browser gesendet werden. Auch das Modifizieren von Daten, die in die Datenbank geschrieben werden sollen, erfolgt über Filter­Hooks.

Eigene (Custom) Hooks für WP Themes

WordPress Hooks kennen viele erfahrene Webmaster zumindest durch Code Snippets, in die functions.php eingefügt werden. Ein bekanntes Beispiel ist das Hook wp_head, mit dem sich das­Segment verändern lässt. Doch beim Customizen von WordPress ist man nicht nur auf die Hooks des Basis-Systems beschränkt. Themes und Plug­ins können ebenfalls eigene Hooks besitzen und es ist auch möglich, eigene Hooks in Themes und Plug­ins einzufügen.

Wie erstellt man eigene Hooks für seine Themes und Plugins?

Was erstmal kompliziert klingt, ist in der Praxis vergleichsweise einfach. Mit wenigen Zeilen Code ist das Ziel des Custom Action Hook erreicht. Den Start macht dabei die functions.php

Mit add_action verbinden wir ­ wie schon bekannt ­ Hook und Funktion:

Damit sind wir mit der functions.php (fast) fertig. Jetzt fügen wir in unserem Theme oder Plugin die folgende Codezeile an der Position ein, an der sich unser Hook einklinken soll.

Jetzt brauchen wir in der functions.php noch die Funktion, die die am Hook auszuführenden Aktionen implementiert:

Wie von Hooks gewohnt, können wir auch mehrere Funktionen an diesem Hook einhängen.

oder auch eine Funktion am Hook entfernen (z.B. durch ein Plug­in oder ein Child Theme,…):

Marc Bohlen

10 Jahre Online Marketing Know-how + 15 Jahre Erfahrung in der Entwicklung

Meinen Kunden stehe ich als Consultant, Online Marketing Experte und Entwickler zur Seite.

Need Help?