WordPress-Hooks – eine der wichtigsten Programmier-Schnittstellen, die Entwickler bei der Arbeit mit WordPress nutzen können. Sie erlauben es, Code einzufügen oder Funktionsweisen zu verändern, ohne direkt die Files von WordPress-Core, Themes oder Plugins anfassen zu müssen – dadurch wären Änderungen spätestens nach dem nächsten Update wieder weg.
Was sind Hooks?
Hooks können dazu genutzt werden, an bestimmten Stellen im PHP-Verarbeitungsprozess von WP eigenen Code auszuführen oder vorhandenen zu modifizieren. Sowohl der WordPress-Core als auch Themes und Plugins (wenn vom Autor eingerichtet) bieten durch Hooks viele Möglichkeiten an den gewünschten Stellen Änderungen vorzunehmen. Über selbst geschriebene Funktionen in der functions.php oder einem eigenen Plugin kann so Code geschrieben werden. In WordPress gibt es 2 verschiedene Arten von Hooks.
Eine Übersicht über alle Hooks gibt’s hier: https://codex.wordpress.org/Plugin_API/Hooks
Actions
Action-Hooks werden dazu genutzt, an bestimmten Stellen im Code einen eigenen Code platzieren und ausführen zu können. Währen dem Aufbau von WP gibt es viele stellen, an denen Actions ausgeführt werden können. Im Prinzip sind diese Stellen immer an bestimmte Events gekoppelt.
Ein Beispiel:
<?php function hook_stuff_in_head() { ?> <meta name="description" content="Hier steht eine geile Meta-Description!" /> <?php } add_action('wp_head', 'hook_stuff_in_head');
Eine kurze Erklärung was hier passiert: Ziel der Funktion ist es, auf der Seite eine Meta-Description auszuspielen. Dazu kann die wp_head-Action genutzt werden, diese „feuert“ zwischen <head> und </head>, so kann an dieser Stelle eigener Code eingefügt werden. Zuerst wird die „normale“ Funktion geschrieben. Diese spielt lediglich den meta-Tag mit Inhalt aus. Mithilfe der WP-Funktion „add_action“ können wir unsere Funktion „hook_stuff_in_head“ an die action „wp_head“ koppeln. Kommt der Aufbau der Seite also an die Stelle <head> ruft WordPress unsere registrierte Funktion auf und führt den definierten Code, in diesem Fall also das Ausspielen des meta-Tags, aus.
Filters
Filter-Hooks funktionieren ähnlich wie Actions. Allerdings haben Filter-Funkionen Parameter, die manipuliert werden können. So kann Inhalt verändert, ergänzt oder gelöscht werden, bevor er dem Nutzer ausgespielt wird.
Wieder ein Beispiel:
function hook_login_message($message) { $message = "<p><strong>Willkommen, bitte anmelden!</strong></p>"; return $message; } add_filter( 'login_message', 'hook_login_message' );
Hier nutzen wir beispielsweise den Filter „login_message“, dieser erlaubt es uns, eine eigene Nachricht auszuspielen, die der Nutzer auf der Login-Seite zu sehen bekommt. Wichtig ist hierbei, dass eine Filter-Funktion immer den Wert zurückgeben muss, den sie als Parameter erhält.
Ein weiteres Beispiel:
function add_date_to_title($title, $id) { $title = $title.' vom <em>'.get_the_date().'</em>'; return $title; } add_filter('the_title', 'add_date_to_title', 10, 2);
Der Filter „the_title“ erlaubt es uns, den Titel eines Artikels zu verändern. In unserem Beispiel erhalten wir den Parameter „$title“ in welchem beispielsweise der Titel „Artikelüberschrift“ steht. Durch den Filter können wir diesen Titel verändern. Wir nutzen die WordPress-Funkion „get_the_date()“ um das Veröffentlichungsdatum des Artikels an die Überschrift zu hängen und geben auch wieder die nun veränderte „$title“-Variable zurück. In diesem Filter erhalten wir zurätzlich die ID des aufgerufenen Artikels, so könnten wir den Titel z.B. nur für einen bestimmten Artikel verändern, oder die Kategorie des Artikels abfragen und abhängig davon verschiedene Titelanpassungen machen.
Hooks in Themes und Plugins
Nicht nur der WordPress-Core hat viele Filter und Actions, auch Plugin- und Theme-Entwickler bietet oftmals verschiedene Hooks an, um ihre Programmierung zu erweitern bzw. zu verändern. Hier ein Beispiel eines Plugins, das fast jeder WP-Nutzer kennt: Yoast SEO. Sie bieten hier (https://yoast.com/wordpress/plugins/seo/api/) eine Übersicht aller Hooks an, die das Plugin bietet.
Ein Beispiel aus der Dokumentation:
function yoast_add_keywords( $str ) { return $str.',yoast'; } add_filter( 'wpseo_metakey', 'yoast_add_keywords', 10, 1 );
Mithilfe dieses Filters wird beispielsweise immer das Keyword „yoast“ in den Meta-Keyword einer Seite ausgeben (was natürlich eine bescheuerte Idee ist, Meta-Keywords sind sowieso tot)
Sollen Plugins oder Themes angepasst werden, ist es immer ratsam, Google zu bemühen und nach „Plugin-/Themename“ und „Hooks“ zu suchen. Oftmals landet man direkt in der Doku und einer Übersicht über alle Hooks.
Eigene Hooks erstellen
Grundätzlich ist es immer sinnvoll, wenn Programmier eigene Hooks und Filter in ihre Themes/Plugins einbauen, um dem Nutzer die Möglichkeit zu geben, bestimmte Verhaltensweisen zu verändern.
Eine ausführliche Doku gibt es hier: https://developer.wordpress.org/plugins/hooks/custom-hooks/
Das könnte Dich auch interessieren
Wie der SHIFT gelingt. Oder: wie ein Relaunch abläuft
Jede Dekade wieder heißt es: der Relaunch steht an. Wobei eine Dekade ein wenig übertrieben ist. Wir wollen ja mit der Zeit gehen. Und auch Relaunch sagt man ...
Social Media Kanäle im Vergleich
Der digitale Wandel verändert unseren Alltag. Kaum einer kennt sie nicht- die sozialen Netzwerke. Hier zählen zu den bekanntesten Social Media Kanälen Facebo...
Pop-up mit JavaScript, CSS und Cookie
Wir haben ein tolles neues Produkt, eine super krasse Aktion oder ein fantastisches Event zu promoten? Da führt kein Weg an einem Pop-up vorbei. Das denken vie...