WordPress Plugin Development Grundlagen – Plugin erstellen
Diese Grundlagen sind zu beachten, wenn du ein WordPress Plugin programmierst:
- Das Plugin kann eine einzelne PHP-Datei sein, zu empfehlen ist aber ein Plugin-Ordner
- Wähle einen einzigartigen, beschreibenden Plugin-Namen, der noch nicht exisitiert
- Der Plugin-Ordername muss derselbe sein, wie die Haupt-PHP-Datei des Plugins
- Nutze Bindestriche, für die Trennung von Wärter in Ordner- und PHP-Dateinamen
- Präfixe alles, wie z.B. Funktionsnamen
- Nutze eine sinnvolle Ordnerstruktur, die Best Practices folgt
Plugin-Ordnerstruktur
Wähle eine bewerte Ordnerstruktur, wie diese hier:
- /plugin-name (Ordner)
- plugin-name.php (Haupt-PHP-Datei des Plugins)
- uninstall.php
- /js (Ordner)
- /css (Ordner)
- /includes (Ordner)
- /images (Ordner)
Strukturiere deine PHP-Funktionen in Unterordner. Wenn du z.B.Funktionen schriebst, die nur im Admin-Bereich des WordPress-Dashboards greifen, füge diese in eine eigene Datei ein und rufe sie nur auf, wenn sich der User im Admin-Interface befindet.
<?php if ( is_admin() ) { // we're in the wp-admin dashboard requiery_once( dirname(__FILE__)).'/includes/admin.php ); } ?>
Plugin-Header
Eine gültiger Plugin-Header ist die einzige Anforderung, die WordPress an ein Plugin stellt. Der Plugin-Header ist ein Kommentar-Block, der an den Anfang der Haupt-PHP-Datei des Plugins gehört. Hier ist ein Beispielhafter Plugin-Header (überprüfe und ändere diesen für dein Plugin, z.B. die Lizenz oder PHP-Version):
<?php /** * Plugin Name: Plugin Name * Plugin URI: https://example.com/plugins/mein-plugin/ * Description: Die Beschreibung meines Plugins. * Version: 1.0 * Requires at least: 5.2 * Requires PHP: 7.2 * Author: Leon Hoffmann * Author URI: https://code-crowd.de/ * License: GPL v2 or later * License URI: https://www.gnu.org/licenses/gpl-2.0.html * Text Domain: plugin-name * Domain Path: /languages */
Plugin-Lizenz
Schreibe die Plugin-Lizenz als Kommentar unter den Plugin-Header. Wenn das Plugin im WordPress-Plugin-Verzeichnis gelistet werden soll, muss es, wie WordPress selbst, Open Source sein, also der „GNU General Plublic License (GPL)“ folgen.
Plugin Dateipfade
Nutze keine hardcoded, absoluten Pfade in deinem Plugin.
Plugin-Pfade
Oft willst du auf eine Datei oder einen Ordner innerhalb deiner WordPress-Installation ansprechen.
Lokale Pfade
Der relative, lokale Pfad zu deinem Plugin, den du innerhalb deines Plugins nutzen ist:
<?php echo plugin_dir_path(__FILE__); ?>
Von diesem Pfad aus, kannst du andere Ordner und Dateien erreichen, wie z.B. deine JavaScript-Datei.
<?php echo plugin_dir_path(__FILE__).'js/script.js'; ?>
Anmerkung
__FILE__ ist eine PHP-Konstante. Mehr zu PHP-Konstanten in der Infobox unten.
Definition: Der vollständige Pfad- und Dateiname einer Datei wobei Symlinks aufgelöst wurden. Wird diese Konstante innerhalb einer nachgeladenen Datei verwendet, wird der Name dieser eingebundenen Datei zurückgegeben.
URL Pfade
Absolute Pfade innerhalb der WordPress-Installation werden mit folgenden Funktionen erzeugt:
plugin_url()
Der Plugin-Order unter /wp-contentincludes_url()
Der /wp-includes Ordnercontent_url()
Der /wp-content Ordneradmin_url()
Der Link zum deine-website.de/wp-admin Dashboardsite_url()
Der Wert der in der wp_options Datenbanktabelle für siteurlhome_url()
Der Wert der in der wp_options Datenbanktabelle für home
Beispielhafte Nutzung der plugin_url()
Funktion:
<?php // Mit Variablen, um die Syntax zu verstehen plugins_url($path, $plugin); // konkretes Beispiel in dem ein Icon aus dem Bilderordner in deinem eigenen Plugin eingebunden wird echo '<img src"' . plugin_url('images/dein-icon.svg', __FILE__). '">'; // hat die Ausgabe <img src="http://deine-website.de/wp-content/plugins/dein-plugin/images/dein-icon.svg"> ?>
Plugin Aktivierung und Deaktivierung
Plugin Aktivierung
Mit der Funktion register_activation_hook()
definierst du, was passieren soll, wenn dein Plugin aktiviert wird (z.B. prüfe, ob die WordPress-Version mit deinem Plugin kompatibel ist oder aktiviere die Standard-Einstellungen).
Die Funktion akzeptiert die beiden Parameter Dateipfad und Callback-Funktion, welche bei Aktivierung ausgeführt wird.
<?php // Die Funktion wird in deiner Plugin-Datei ausgeführt und feuert die Callback-Funktion "deine-aktivierungs-funktion()" register_activation_hook('__FILE__', 'deine-aktivierungs-funktion'); // Hier definierst du in der Callback-Funktion "deine-aktivierungs-funktion()", was bei Aktivierung passiert deine-aktivierungs-funktion() { // was auch immer bei Aktivierung passieren soll } ?>
Plugin Deaktivierung
Passiert mit dem register_deactivation_hook()
. Diese Build-In-Funktion wird genauso gehandhabt, wie die Aktivierungs-Funktion.
Plugin Deinstallation
Nützlich um Daten aus der Datenbank zu entfernen und ähnliches.
Es gibt zwei Wege ein Plugin zu deinstallieren: Per Datei uninstall.php oder per register_uninstall_hook()
.
Die bevorzugte Variante ist die Datei, da saubere Code-Trennung / Übersichtlichkeit.
Erstelle einfach diese Datei und lege sie in das Root-Verzeichnis des Plugins (wie oben unter Ordnerstruktur zu finden)
<?php // Abbrechen, wenn die Datei außerhalb von WordPress geöffnet wird (Sicherheit) if(!defined('WP_UNINSTALL_PLUGIN' )) exit(); // Lösche Plugin-Optionen aus der options Tabelle delete_option('deine-plugin-optionen'); ?>
Deine uninstall.php sollte so konfiguriert sein, dass dein Plugin bei Deinstallation keine Spuren mehr in Daten und Datenbank hinterlässt. Löschen sich bei Deinstallation vom User (z.B. Admin) generierte Inhalte, soll der User vorher seine Zustimmung geben müssen.
P.S. Wenn dir der Artikel gefallen hat, abonniere doch die wöchentlichen Tutorials auf YouTube, den E-Mail-Newsletter oder Beteilige dich an der Diskussion auf Facebook.
Die wichtigsten Git commands im Überblick
Most important Git commands Set User git config –global user.name... Programmieren lernen
Was ist Headless WordPress?
Was bedeutet der Begriff Headless WordPress? Wenn wir über Headless... Programmieren lernen
Filter Hooks im WordPress Development
Filter Hooks im WordPress Development verwenden Was sind WordPress Filter... Programmieren lernen
Kommentare