WordPress Hooks: Updatesicher modifizieren

WordPress Hooks: Updatesicher modifizieren

Wer am Source Code von Anwendungen wie WordPress herumbastelt, hat ein Problem: Beim Update, werden alle Änderungen überschrieben. Um dieses Hindernis zu umgehen, gibt es sogenannte WordPress Hooks. Das sind Stellen im Programmcode, an denen Entwickler Modifizierungen vornehmen können, ohne die Updatefähigkeit zu beeinträchtigen.

  1. Hooks für saubere Änderungen
  2. Hooks kennenlernen
  3. Beispiel: Actions
  4. Beispiel: Filters
  5. Eigene WordPress Hooks entwickeln

Die Entwicklung von WordPress läuft rasant: Seit der Veröffentlichung der Version 3.0 gibt es nur noch wenige, die daran zweifeln, dass sich das ursprüngliche Blog-System auch ohne Weiteres als Content Management System einsetzen lässt.

Im heutigen Blog-Beitrag möchten wir Entwicklern Möglichkeiten aufzeigen, wie Sie WordPress ganz nach Ihrem Geschmack anpassen können – und das ganz ohne den Source Code anzutasten.

Hooks für saubere Änderungen

Generell muss bei WordPress zwischen zwei verschiedenen Hook-Arten unterschieden werden: Actions und Filters.

  • Actions: Mit einer Action könnt Ihr bestimmte PHP-Funktionen aufrufen, wenn z. B. ein bestimmter bzw. zusätzlicher Event ausgeführt werden soll. Hiermit könnt Ihr z. B. unter jedem Eurer Artikel einen Twitter-Link oder Facebook „Gefällt mir“-Button hinzufügen.
  • Filters: Mit einem Filter könnt Ihr Text bzw. Variablen manipulieren, bevor dieser zur Datenbank oder auf den Browser-Bildschirm hinzugefügt wird. Beispielsweise wäre es hiermit möglich den Text eines Kommentars abzufangen und diesen auf fragwürdige Begriffe durchsuchen und dann zu zensieren.

In manchen Fällen ist der Unterschied zwischen den verschiedenen Hooks nicht zu erkennen, da Anwender mit beiden Methoden sehr häufig zum gleichen Ziel kommen können. Zur Funktionsweise der Hooks lässt sich sagen, dass zu einem Ereignis z. B. beim Absenden eines Kommentars eine bestimmte PHP-Funktion aufgerufen werden soll. Insgesamt gibt es 1523 Ereignisse (vollständige Liste: , mit denen Anwender nahezu alle Abläufe von WordPress anpassen können, ohne den Source Code zu verändern. Außerdem ist es möglich, eigene Hooks zu entwickeln.

Hooks kennenlernen

Im Folgenden möchte ich Euch die einzelnen Hook-Methoden anhand eines Beispiels präsentieren. Ich möchte dabei betonen, dass sich die Beispiele auf vorhandene WordPress Hooks (siehe Ereignis-Liste) beziehen und es somit reicht, diese in einem Plugin hinzuzufügen, da diese generell auf WordPress zugreifen. Am Schluss erkläre ich, wie Ihr eigene Hooks entwickeln könnt und wie Ihr diese in Euren Themes aufrufen könnt.

Beispiel: Actions

Das folgende Script für WordPress schickt allen eingetragenen Personen eine Benachrichtigung, dass ein neuer Artikel im Blog veröffentlicht wurde. Möchtet Ihr jedem angemeldeten User eine E-Mail schicken, müsstet Ihr eine Datenbankabfrage hinzufügen, welche ich aber aus Gründen der Einfachheit an dieser Stelle nicht aufführe:

Mit add_action habe ich den Hook publish_post, welcher bei jeder Veröffentlichung eines Artikels aufgerufen wird, ausgewählt und mit der PHP-Funktion email_friends verknüpft. Der Parameter $post_ID wird irgendwo in den unendlichen Weiten des WordPress Source Codes gesetzt. Es ist immer die Frage, ob der ausgewählte Hook nun Parameter übergibt oder nicht. Darum solltet Ihr zuerst Informationen über den Hook sammeln, um herauszufinden, ob überhaupt irgendwelche Parameter gesetzt bzw. benötigt werden. In unserem Beispiel publish_post findet Ihr unter http://adambrown.info/p/wp_hooks/hook/publish_post die Information, dass dieser Hook die Variable postID übergibt („Action function arguments: post ID“).

Wenn Ihr nun einen neuen Artikel veröffentlichen, wird an test1@test.de und test2@test.de eine E-Mail mit folgendem Inhalt versandt:

Ein neuer Beitrag wurde soeben veröffentlicht. https://seo-sanitaeter.de

Beispiel: Filters

Im folgenden Beispiel baue ich einen Filter, der von uns festgelegte verbotene Wörter zensieren soll. In unserem Plugin fügen wir folgenden Code-Schnipsel hinzu:

Mit add_filter habe ich nun den Hook comment_text, welches den Kommentar bearbeitet, bevor dieser angezeigt wird, aufgerufen und dort meine PHP-Funktion removeBadWords verknüpft. Im Gegensatz zur Actions-Methode muss hier mindestens ein Parameter übergeben werden, wie das Beispiel mit $string zeigt.
Wenn der User nun einen Kommentar mit dem Inhalt „Die Kekse sind doof!“ verfasst, wird folgendes ausgegeben:

Die Kekse sind *****!

Eigene WordPress Hooks entwickeln

Nun zeige ich Euch, wie Ihr einen komplett neuen Hook, in diesem Fall einen Filter, erstellt. In dem Beispiel taufen wir den Hook zensierMich und lassen ihn dieselbe Funktion wie im vorherigen Beispiel aufrufen.

Ein Problem hierbei ist, dass wir den Text der Kommentare nicht herausfiltern können, außer der Anwender ändert etwas am Source Code oder entwickelt selber Datenbankabfragen. Daher sollten nur eigene Hooks entwickelt werden, wenn es wirklich kein passendes Standard Hook in WordPress zu finden ist.

Nun gehen wir in unsere Themes-Datei und fügen folgenden Code hinzu: (Der Einfachheit halber habe ich nun $comment einen Text zugewiesen, welchen wir normalerweise via Datenbankabfrage bekommen würden. )

Mit apply_filters habe ich den Filter aufgerufen und ihm die Variable $comment übergeben. Das Ergebnis (die zensierte Version) speichere ich dann in $comment.
Die Ausgabe sieht nun wie folgt aus:

Die Kekse sind *****!

Um eine Action aufzurufen, benutzt Ihr folgenden Befehl:

Wie oben erwähnt, benötigt Ihr apply_filters und do_action nur, wenn Ihr neue Hooks entwickeln möchtet, was relativ selten eintrifft. Ich hoffe, dieser kleine Einblick in die Welt der WordPress Hooks hilft Euch bei Euren Projekten weiter.

Mit diesen praktischen Helfern könnt Ihr vieles am Blog-System anpassen ohne die Updatefähigkeit Eurer Installationen zu beeinträchtigen. Viel Spaß beim Ausprobieren! :-)

>> WordPress als CMS?

Kommentar hinzufügen

    Hilfe & Kontakt

    Support-Hotline
    +49 (0) 800/440-3000

    E-Mail
    support@mittwald.de