Читать книгу Entwicklung von WordPress-Plugins - Onno Gabriel - Страница 4
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:
<?php /* Plugin Name: Beispiel-Plugin-Name Plugin URI: https://www.meine-plugin-domain.de Description: Eine kurze Beschreibung des Plugins Version: 1.3 Author: Paul Progger Author URI: https://www.entwickler-paul-progger.org/ License: GPL2 License URI: https://www.gnu.org/licenses/gpl-2.0.html Text Domain: plugin-name Domain Path: /languages */ ?>
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 funktionaler als auch ein objektorientierter Programmierstil gewä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).
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.↩