Grundlagen für CMS-Zusatzmodule Plug-in-Entwicklung unter Wordpress

Autor / Redakteur: Christian Rentrop / Stephan Augsten

Wordpress lässt sich wunderbar erweitern. Wer in den umfangreichen Plug-in-Repositories nicht findet, was er sucht, kann über eine Schnittstelle des Blog-Systems einfach eigene Erweiterungen entwickeln.

Firmen zum Thema

Aller Anfang ist schwer, vielleicht beginnt man die Plug-in-Entwicklung für Wordpress einfach mit dem Header.
Aller Anfang ist schwer, vielleicht beginnt man die Plug-in-Entwicklung für Wordpress einfach mit dem Header.
(Bild: Rentrop)

Wordpress ist zu einem vollwertigen Content-Management-System herangereift und nicht ohne Grund das beliebteste System dieser Art für jede Art von Online-Content. Durch die leistungsstarke Schnittstelle ist Wordpress zudem nahezu beliebig erweiterbar. Dementsprechend viele Plug-ins sind für das System verfügbar.

Diese finden sich etwa im Plug-in-Repository von Wordpress oder bei freien Entwicklerinnen und Entwicklern, die ihre Plug-ins auf Github oder über ihre Website vertreiben – nicht selten kommerziell. Genau hier wird es interessant: Freie Software Developer mit einer guten Idee können sich mit einer Erweiterung durchaus ein anständiges Zubrot verdienen. Und wer Wordpress einfach für Kunden verwaltet, kann natürlich eigene Plug-ins schreiben, um sich selbst die Arbeit zu erleichtern.

Plug-in für Wordpress entwickeln: So geht’s

Die Plug-in-Schnittstelle von Wordpress ist im Grunde nichts anderes als ein System, das dem Blog-System neue Funktionen hinzufügt. Der Vorteil ist, dass durch den Einsatz eines Erweiterungsmoduls ein klar abgegrenztes und austauschbares „Zusatzsystem“ entsteht.

Grundsätzlich lassen sich Erweiterungen und kleinere Hacks zwar auch direkt über die functions.php realisieren, doch durch das Plug-in-System sind auch ebenso komplexe wie mächtige Zusatzfunktionen machbar. Alles, was dazu nötig ist, ist ein Staging-System, das sich, falls noch nicht vorhanden, ganz leicht über eine Appliance lokal aufsetzen lässt.

Der richtige Name ist wichtig

Anschließend muss im Verzeichnis /wp-content/plugins/ nur noch ein Unterverzeichnis mit dem Namen der Erweiterung angelegt werden. Es ist sinnvoll, hier einen „sprechenden“ Namen zu wählen, um den Wiedererkennungswert zu steigern.

Wer das Zusatzmodul veröffentlichen will, sollte dementsprechend einen Namen wählen, der zumindest ein wichtiges, den Zweck des Plug-ins beschreibendes Schlagwort wie „Gallery“, „Avatar“ oder „Cache“ enthält. Ein Name wie „Marco’s tolles Cache-Plug-in“ ist in dieser Hinsicht tatsächlich besser als ein künstlicher Name wie „leeeeroooooyyy“.

Es ist immer sinnvoll, das Plug-in auch mit GitHub zu synchronisieren.
Es ist immer sinnvoll, das Plug-in auch mit GitHub zu synchronisieren.
(Bild: Rentrop / GitHub)

Wer Wert auf eine Github-Verknüpfung legt, kann zusätzlich ein Repository auf Github anlegen und den lokalen Wordpress-Plug-in-Ordner über die Github Desktop-App mit Github verknüpfen. Anschließend kann es auch schon losgehen.

Plug-in-Entwicklung starten

Eine Wordpress-Erweiterung in ihrer einfachsten Form besteht aus einer PHP-Datei, die über verschiedene, von Wordpress vorgegebene Hooks eingebunden wird. Natürlich lassen sich hier auch zusätzliche Stylesheets, Bilder oder Java-Skripte einbauen. Zunächst geht es aber darum, das Plug-in überhaupt als solches zu Kennzeichnen.

Aller Anfang ist schwer, vielleicht beginnt man einfach mit dem Plug-in-Header.
Aller Anfang ist schwer, vielleicht beginnt man einfach mit dem Plug-in-Header.
(Bild: Rentrop)

Dazu wird mit einem Editor eine leere PHP-Datei mit Namen des Plug-ins innerhalb des eben angelegten Plug-in-Ordners erstellt. Anschließend sollte der Info-Header des Wordpress-Zusatzmoduls nach folgendem Schema erstellt werden:

/*
Plugin Name: Mein Test-Plugin
Plugin URI: https://www.dev-insider.de
Description: Ein kleines Test-Plugin
Version: 0.1
Author: Christian Rentrop
Author URI: https://www.rheinwort.de
License: GPLv2
License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

Dadurch wird nicht nur der Name, der Autor und die Quelle festgelegt, sondern auch die Lizenz, unter dem das Plug-in veröffentlicht werden soll – und natürlich auch der Name der Erweiterung. Wem das zu viel Arbeit ist, der kann natürlich auf ein Wordpress-Starter-Plug-in zurückgreifen, das schon alle notwendigen und viele optionale Dateien und Ordner enthält.

Plug-in schreiben

Das war es im Grunde auch schon mit den Vorbereitungen. Anschließend können Entwickler sich anhand der Wordpress-Hooks im Plug-in austoben, sollte aber dabei die Coding Standards von Wordpress beachten. Der Grund dafür: Wordpress ist auf (Quell-)Offenheit ausgelegt, weshalb ein eigener „Programmierdialekt“ möglicherweise für andere Entwickler schlecht lesbar ist.

Entwickler sollten also darauf achten, die Code-Sprache so zu verfassen, dass sie für andere lesbar ist. Das gleiche gilt übrigens auch für die Dokumentation des Plug-ins. Grundsätzlich besteht unter Wordpress keine Dokumentationspflicht. Wird jedoch eine Dokumentation verfasst, sollten sich Entwickler hier ebenfalls an die Standards halten, die von Wordpress vorgegeben werden. Wordpress selbst empfiehlt dabei den phpDocumentor-Standard.

Programmieren mit Aktionen und Filtern

Die Plug-in-Schnittstelle von Wordpress verfügt über eine ganze Reihe praktischer Aktionen und Filter, mit deren Hilfe schnell auf Funktionen des Systems zurückgegriffen werden kann. Entwickler und Entwicklerinnen müssen also nicht alles von Grund auf neu definieren. Um Daten zu ziehen und zu posten, kann die Wordpress HTTP-API zum Einsatz kommen: Diese erlaubt es Entwicklern, alle möglichen Informationen aus dem Wordpress-System oder aus Drittquellen ins Plug-in zu holen.

Plug-in richtig einbinden

Das Plug-in muss auch noch ins Wordpress-System integriert werden, sodass Administratoren bequem Funktionen und Einstellungen abrufen können. Hierfür gibt es verschiedene vordefinierte Positionen im Wordpress-Backend: So kann jedes Plug-in seine eigene Einstellungsseite aufweisen oder in Form einer Metabox unter dem Post-Bereich eingebunden werden.

Die dritte Position sind Widgets und Dashboard-Widgets, die auf der Startseite des Wordpress-Backends erscheinen. Zusätzlich kann die Einstellungs-Seite auch im Wordpress-Menü eingehängt werden: Unter „Einstellungen“ bietet Wordpress dank der Settings-API eine halbautomatische Möglichkeit, auch gleich Einstellungs-Seiten für das Plug-in zu entwerfen. HTML-Textfelder lassen sich so leicht anlegen.

Sicherheit prüfen

Als Webanwendungen sind auch Erweiterungsmodule nicht vor Sicherheitslücken gefeit. Im schlimmsten Fall können diese eine ganze Seite lahmlegen, weshalb Entwickler die Plug-in-Sicherheit immer im Auge behalten sollten.

Wordpress besitzt hierfür sogenannte „Nonces“, eindeutige „Numbers used once“. Diese können eingesetzt werden, um die Sicherheit deutlich zu erhöhen, weil sie Aktionen in Links eindeutige Nummern zuweisen. Dadurch ist zum Beispiel die Gefahr einer Löschung durch Link-Klicks gebannt.

Grundsätzlich sollten Entwickler bei der Plug-in-Sicherheit die gleichen Regeln gelten lassen, wie bei anderen Entwicklungen – und ein ausgiebiges Testing durchführen, gerne auch mit Dritten. Gute Dokumentation kann ebenfalls helfen. Wordpress prüft Erweiterungen nämlich nicht auf Sicherheitslücken.

Plug-in veröffentlichen

Ist das Zusatzmodul funktional fertig gestellt und abgesichert, spricht eigentlich nichts dagegen, es zu veröffentlichen. Dabei gibt es mehrere Möglichkeiten. Die wohl einfachste und erfolgversprechendste ist das Hochladen ins Wordpress-Plug-in-Verzeichnis, wofür ein Wordpress.org-Benutzerkonto notwendig ist. Das Problem hier: Wordpress hat relativ strenge Richtlinien, welche Anforderungen Plug-ins erfüllen sollen: So muss das Plug-in zum Beispiel eine mit der GPL kompatible Lizenz aufweisen.

Wer diese Anforderungen nicht erfüllen kann oder möchte, kann den Weg über die eigene Website nehmen. Ein als ZIP-Datei gepacktes Plug-in ist schnell hochgeladen und kann zum Beispiel über den eigenen Shop mit einem Lizenzcode oder einem Abo vertrieben werden.

(ID:47527189)

Über den Autor

 Christian Rentrop

Christian Rentrop

IT-Fachautor