Entwicklung von WordPress-Plugins
Eine Einführung in die Erweiterung des verbreiteten Content-Management-Systems durch eigene Plugins
Onno Gabriel
Dieses Buch bietet einen Einstieg in das Thema Plugin-Entwicklung für WordPress. Es richtet sich an Entwicklerinnen und Entwickler, die sich kurz und bündig über alle relevanten Themen rund um die Plugin-Entwicklung informieren wollen. Die Lektüre dieses Buches soll Sie also in die Lage versetzen, für WordPress eigene Plugins zu entwickeln. Es setzt dabei allein etwas Erfahrung im Umgang mit WordPress sowie hinreichende Kenntnisse in der Programmiersprache PHP voraus.
Wo immer möglich wird im Text auf weitere Informationsquellen verwiesen, insbesondere auf die entsprechenden Teile der offiziellen WordPress-Dokumentation. Dabei werden frei verfügbare Quellen wie beispielsweise Webseiten bevorzugt und aktuelle Quellen bevorzugt.
Dieses Buch ist auf Deutsch geschrieben und soll damit auch eine Lücke schließen zur sonstigen Literatur und Dokumentation zur WordPress-Plugin-Entwicklung, die fast ausschließlich auf Englisch verfügbar ist. Es werden deutschsprachige Fachbegriffe verwendet, wo immer sich diese bewährt haben: also beispielsweise Webseite , Verzeichnis oder Datei . Bei Begriffen, für sich noch keine deutsche Bezeichnung eingebürgert hat, wird das englischsprachige Original beibehalten: also Plugin , Hook oder auch Frontend und Backend . Auch werden in den Programm-Beispielen die englischsprachigen Variablen- und Funktionsnamen aus der WordPress-Dokumentation übernommen, um einen Wechsel zwischen diesem Buch und der offiziellen Dokumentation zu erleichtern.
Das Buch beginnt mit dem grundsätzlichen Aufbau von WordPress-Plugins und zeigt die verschiedenen Möglichkeiten auf, wie Plugins in WordPress integriert und mit dem verschiedenen Bestandteilen des Kernsystems interagieren können. Auf eine mögliche Mehrsprachigkeit von Plugins wird ebenso eingegangen wie auch auf die Gestaltung eines Administrationsbereichs für ein Plugin. Besonderer Wert wird auf Sicherheit des Programmcodes eigener Plugins gelegt. Abschließend wird die Veröffentlichung eines selbst geschriebenen Plugins in dem offiziellen Plugin-Verzeichnis auf wordpress.org
beschrieben. Im Anhang findet sich eine Auflistung von nützlichen Erweiterungen für aktuelle Quellcode-Editoren sowie ein Glossar der wichtigsten Fachbegriffe.
Alle Code-Beispiele sind möglichst kurz gehalten und beziehen sich auf WordPress ab Version 4 und PHP ab Version 5.3.
Über Fragen, Kritik oder Anregungen zu diesem Buch würde ich mehr sehr freuen und diese in zukünftige Auflagen dieses Buches einfließen lassen – Kontaktmöglichkeiten finden sich im Impressum.
Berlin, September 2018
Onno Gabriel
Was ist ein WordPress-Plugin?
Ein Grund für den Erfolg von WordPress ist die leichte Erweiterbarkeit des Kernsystems mit Hilfe von Plugins 1. Ein WordPress-Plugin ist dabei im einfachsten Fall eine in PHP geschriebene Funktion, die dem Kernsystem eine neue Eigenschaft oder einen neuen Dienst hinzufügt. Komplexere Plugins können WordPress um ganze Diskussionsforen oder Shopsysteme erweitern.
Plugins sind neben dem Kernsystem und den Themes die dritte Komponente aus denen eine WordPress-Installation besteht. Der Kern ist das Grundsystem, welches ausschließlich von den WordPress-Entwicklerinnen und Entwicklern bearbeitet und durch offizielle Updates verbreitet wird. Im Kern findet unter Anderem die Verwaltung der Seiten und Beiträge und das Benutzermanagement statt. Der Kern stellt dabei auch die Anbindung zur Datenbank zur Verfügung, in der die Inhalte dauerhaft gespeichert sind.
Neue Funktionen können diesem Kernsystem entweder über das Theme oder über Plugins hinzugefügt werden. Es gibt keine scharfen Regeln, ob eine neue Funktion besser im Theme oder in einem Plugin untergebracht ist. Kleinere, nur das jeweilige Frontend betreffende Funktionen können zum Beispiel gut in das Theme integriert werden. Aufwendigere Änderungen, Backend-Erweiterungen oder auch neue Funktionen, die unabhängig vom Theme für verschiedene WordPress-Installationen zur Verfügung gestellt werden sollen, sind sinnvoller als eigenes Plugin zu realisieren.
Alle Plugins einer WordPress-Installation sind standardmäßig im Verzeichnis /wp-content/plugins/
zu finden 2, wobei jedes Plugin dort in einem eigenen Unterverzeichnis untergebracht ist. Minimal besteht ein Plugin aus einer einzelnen PHP-Datei, wohingegen der Programmcode komplexerer Plugins auf mehrere Dateien verteilt werden kann. WordPress erkennt ein Plugin automatisch als solches, sobald eine der PHP-Dateien im Pluginverzeichnis in ihrem Header bestimmte, das Plugin charakterisierende Informationen enthält, mindestens aber den Plugin-Namen. Ein ausführlicher Header sieht beispielsweise wie folgt aus:
Die einzelnen Zuweisungen haben folgende Bedeutung:
Plugin Name: der Name des Plugins, wie er auch in der Plugin-Liste im Administrationsbereich auftauchen wird.
Plugin URI: die Webseite zum Plugin. Wichtig bei Veröffentlichung des Plugins: Falls hier eine Webseite angegeben wird, muss diese auch tatsächlich von diesem Plugin handeln.
Description: Eine kurze Beschreibung des Plugins. Diese wird ebenfalls im Administrationsbereich angezeigt werden.
Version: Versionsnummer des Plugins, also z.B. 1.0 oder 2.1.3.
Author und Author URI sind der Name und die Webseite der Autorin oder des Autors des Plugins.
License und License URI Sind die Abkürzung und die Webseite der Lizenz, unter der das Plugin veröffentlicht wird.
Text Domain: Textdomäne des Plugins; wichtig für mehrsprachige Plugins, siehe Kapitel Mehrsprachigkeit .
Domain Path: Pfad zu den Übersetzungen des Plugins.
Oft besteht ein Plugin aus mehr als nur einer Datei. Neben verschiedenen PHP-Dateien mit dem Programmcode können auch noch weitere Dateien zum Beispiel für Grafiken, Stylesheets oder auch JavaScript hinzukommen. Für diese Dateien hat sich eine Verzeichnisstruktur wie folgt bewährt:
plugin-name |-- includes/ |-- languages/ |-- assets/ |-- css/ |-- images/ |-- js/ |-- plugin-name.php |-- uninstall.php
Wird der Programmcode des Plugins auf mehrere PHP-Dateien verteilt, können diese in das Unterverzeichnis includes/
und dort wiederum in weiteren Unterverzeichnissen einsortiert werden.
Das Verzeichnis languages/
enthält die verschiedenen Sprachdateien mit den Übersetzungen des Plugin (mehr dazu im Kapitel Mehrsprachigkeit ).
Das Verzeichnis assets/
wird mitunter auch public/
genannt. In ihm werden sonstige, vor allem für die Darstellung benötigte Dateien gespeichert, wie beispielsweise Bilder, CSS-Dateien oder auch JavaScript-Bibliotheken.
Zusätzlich zu dieser Grundstruktur können weitere Unterverzeichnisse angelegt werden, zum Beispiel admin/
für Funktionen oder Klassen, über die der Administrationsbereich erzeugt wird (mehr dazu im Kapitel Administrationsbereich eines Plugins ) oder auch vendor/
für Programmcode von Drittanbietern.
Die Datei plugin-name.php
ist der Einstiegspunkt des Plugin. Sie enthält den oben gezeigten Header und entweder den kompletten Programmcode des Plugins oder lädt weitere Programmteile aus weiteren Dateien nach.
Für den Start eines neuen Plugins bietet sich das Plugin-Boilerplate an, das die oben genannte Struktur schon fertig enthält und einfach angepasst und erweitert werden kann.
Für den PHP-Code des Plugins kann sowohl ein funktionalerals auch ein objektorientierter Programmierstilgewählt werden – oder eine Kombination aus beiden. Dies hängt neben den eigenen Vorlieben natürlich auch stark von der zu lösenden Aufgabe ab. Eine Ausnahme bildet die Entwicklung eigener WordPress- Widgets , die eine Erweiterung der Klasse WP_Widget
und daher stets eine objektorientierte Programmierung erfordert (siehe auch das Kapitel Einbindung über die Widget-Klasse ).
Читать дальше