1 Allein das offizielle WordPress-Plugin-Verzeichnis bietet über 50.000 Plugins für die verschiedensten Anwendungen an. ↩
2 WordPress ist im hohem Maße konfigurierbar, und so ist auch die Verzeichnisstruktur beliebig anpassbar. Die Dateien einer einzelnen WordPress-Installation können sogar auf verschiedenen Servern liegen, um beispielsweise die Performance des Systems zu verbessern. ↩
Einbinden von Plugins in WordPress
Ist ein Plugin unter /wp-content/plugins/
abgelegt, kann es im Administrationsbereich in der Liste der Plugins gefunden und dort auch aktiviert werden. Erst nach dieser Aktivierung wird das Plugin von WordPress auch eingebunden. Die Art und Weise der Einbindung kann auf unterschiedliche Weise geschehen. Welche gewählt wird, hängt auch von der Aufgabe ab, die das Plugin erfüllen soll. Üblich sind folgende drei Methoden:
1 Einbindung über einen Hook (englisch für„Haken“). Dabei wird eine Funktion des Plugins an einer definierten Stelle innerhalb des WordPress-Codes aufgerufen. Mehr dazu im folgenden Kapitel Einbindung über WordPress-Hooks .
2 Einbindung über einen Shortcode , der in einen Post oder sonstigen Inhalt der Webseite eingefügt werden kann. WordPress ruft an der Stelle des Shortcodes dann eine zuvor definierte Funktion des Plugins auf. Mehr dazu im Kapitel Einbindung über Shortcodes .
3 Einbindung über ein Widget . Plugins können eigene Widgets samt Inhalt zur Verfügung stellen, die dann an verschiedenen Stellen innerhalb der Webseite eingefügt werden können. Mehr dazu im Kapitel Einbindung über die Widget-Klasse .
Alle drei Arten der Plugin-Einbindung werden im Folgenden genauer beschrieben.
Einbindung über WordPress-Hooks
Hooks sind definierte Stellen im WordPress-Programmcode, an die sich Funktionen von Plugins und Themes „einhaken“ können. Es gibt dabei zwei Möglichkeiten, eigene Funktionen an einen Hook zu hängen, die sogenannten Actions und Filters :
Actionssind Funktionen mit Programmcode, der an Stelle der Hooks ausgeführt werden soll. Dies kann beispielsweise dazu genutzt werden, eigene Plugin-Funktionen an bestimmten Stellen innerhalb des WordPress-Kernsystem oder auch in anderen Plugins oder dem Theme auszuführen.
Filterssind ebenfalls Funktionen, die aber im Unterschied zu Actions lediglich eine vorhandene Variable entgegen nehmen, deren Wert modifizieren und den neuen Wert wieder zurück geben. Beispielsweise könnte so der Titel von Posts mit einer zusätzlichen Infografik versehen werden, die die Art des Posts symbolisiert.
Ein paar Beispiele für oft in Plugins genutzte Hooks:
Hook |
Zeitpunkt des Auslösens |
plugins_loaded |
Alle Plugins sind geladen. |
init |
Alle wesentlichen Bestandteile sind geladen. Wird typischer Weise für die Init-Funktionen von Plugins genutzt. |
wp_enqueue_scripts |
Wird genutzt, um Zusatz-Skripte zu laden. |
shutdown |
Kurz bevor die Ausführung der PHP-Skripte endet. |
Eine umfassende Liste aller Hooks, die bei einem typischen WordPress-Seitenaufbau durchlaufen werden, ist in der Action Reference in der offiziellen WordPress-Dokumentation zu finden (auf Englisch).
Um eine eigene Funktion an einen Hook zu hängen, d.h. sie durch WordPress zum Zeitpunkt des Hook-Auslösers aufrufen zu lassen, wird die Funktion add_action()
verwendet:
add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
Die Funktion wird mit bis zu vier Argumenten aufgerufen:
$tag ist der Name des Action-Hooks (erforderlich).
$function_to_add ist der Name der Funktion, die aufgerufen werden soll (erforderlich).
$priority legt die Priorität des Funktionsaufrufes fest (optional; Standardwert ist 10). Sind mehrere Funktionen mit dem gleichen Hook verbunden, werden diese in der Reihenfolge ihrer Priorität aufgerufen.
$accepted_args ist die (optionale) Zahl der Argumente, die bei dem Funktionsaufruf übergeben werden.
Um beispielsweise die eigene Funktion my_plugin_init()
zum Zeitpunkt des init
-Hooks ausführen lassen, reicht folgende add_action()
-Anweisung:
Zudem ist es möglich, eigene Hooks in Plugins und Themes zu definieren. Das ist beispielsweise auch sinnvoll, wenn in einem Plugin Möglichkeiten für andere Plugins zum Ausführen von Zusatzfunktionen geschaffen werden sollen.
Tatsächlich beruht der Erfolg vieler der am weitesten verbreiteten Plugins wie zum Beispiel WooCommerce oder auch BuddyPress unter anderem auf deren einfachen Erweiterbarkeit mittels Hooks. Denn erst mit den Hooks können sich weitere Plugins von Drittanbietern in diese Plugins „einhaken“ und auf diese Weise Zusatzfunktionen anbieten.
Ein eigener Hook wird über die Funktion do_action()
erstellt:
do_action( string $tag, $arg = '' )
Hier ist $tag
der erforderliche Name des Hooks und $arg
ein optionales Array aus Argumenten, die einer aufzurufenden Funktion übergeben werden. Sobald WordPress die Stelle mit einem do_action()
-Aufruf erreicht, werden alle mit diesem Hook verbundenen Funktionen aufgerufen.
Zum Beispiel könnte an das Ende einer Funktion, über die ein Artikel in einen Warenkorb gelegt wird, ein Hook mit Namen artikel_hinzugefuegt
eingefügt werden, der als einzelnes Argument die Variable mit dem hinein gelegten Artikel übergibt:
Dieser neue Hook kann dann durch beliebige andere Plugins oder Themes genutzt werden, indem diese eigene Funktionen mit dem Hook verbinden. Zum Beispiel:
Die Filter funktionieren analog zu den eben beschriebenen Actions, mit den Unterschied, dass ein Filter nicht dazu gedacht ist, eigenen Code einzufügen als vielmehr den Rückgabewert einer schon bestehenden Funktion zu modifizieren. Auf diese Weise kann ein Wert verändert werden, bevor er beispielsweise zum Browser ausgeliefert wird oder – auf dem umgekehrten Weg – in die Datenbank geschrieben wird.
Das Verbinden einer eigenen Funktion mit einem Filter-Hook geschieht über die Funktion add_filter()
:
add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )
Die Argumente sind analog zu der Funktion add_action()
für Actions definiert:
$tag ist der Name des Filter-Hook (erforderlich).
$function_to_add ist der Name der Funktion, die aufgerufen werden soll (erforderlich).
$priority legt die Priorität des Funktionsaufrufs fest (optional; Standard = 10). Falls mehrere Funktionen mit einem Hook verbunden sind, werden zunächst jene mit kleinerer Nummer aufgerufen.
$accepted_args ist die (optionale) Zahl der Argumente, die mit dem Funktionsaufruf übergeben werden.
Wie bei den Actions können auch für Filter eigene Hooks gesetzt werden. Dies geschieht über die Funktion apply_filters()
:
apply_filters( string $tag, mixed $value, mixed $var )
Hier ist $tag
wieder der Name des Hooks, $value
der zu filternde Wert und $var
sind optionale, weitere für die Berechnung des neuen Wertes notwendige Variablen.
Ein Beispiel für einen Filter, der unter jedem angezeigten Post einen Satz mit der Anzahl der Worte des Posts hinzufügt:
WordPress bietet noch eine Reihe weiterer Funktionen rund um das Arbeiten mit Aktionen und Filtern, wie zum Beispiel das Entfernen von Hooks über remove_action()
bzw. remove_filter()
. Näheres dazu findet sich auf der Webseite Advanced Topics in der WordPress-Dokumentation.
Читать дальше