WordPress-Hooks – Filters und Actions

Veröffentlicht von Marcel - 22. Mai 2019

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.

wp-1050x700

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.

Filter

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.

Filter

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/

Beitragsbild W.carter [CC0]

Das könnte Dich auch interessieren

Macht der Gewohnheit

Wir Menschen sind Gewohnheitstiere. Wir führen täglich hunderte Entscheidungen unbewusst aus Gewohnheit. Oder musst Du darüber nachdenken welchen Schuh Du zu...

Formulare mit jQuery und PHP validieren

Um Formulardaten vor dem Absenden auf Vollständigkeit und Richtigkeit zu prüfen, bedarf es client- und serverseitige Kontrolle. Hierbei könnte man folgenderm...

Web Fonts für Halunken – Ladezeit und Einbindung

Wie Milchschrift Kunst ist, so kann auch die passend gewählte Schriftart einer Webseite Kunst sein, oder das auswählen des Entsprechenden Formates. In diesem ...