Nachdem ich letzte Woche über die Entwicklung von Drupal Modulen geschrieben habe, heute ein Artikel über die Entwicklung eines WordPress Plugins. WordPress definiert ein Plugin als
A WordPress Plugin is a program, or a set of one or more functions, written in the PHP scripting language, that adds a specific set of features or services to the WordPress site, which can be seamlessly integrated with the site using access points and methods provided by the WordPress Plugin Application Program Interface (API).
frei übersetzt also …
Ein WordPress Plugin ist ein Programm oder eine Sammlung von in PHP geschriebenen Funktionen, die einer WordPress Website einen Service oder eine bestimmte Funktionalität hinzufügen. Services können die Zugriffspunkte und Methoden der WordPress API „nahtlos“ nutzen.
Bevor du dein eigenes Plugin schreibst, lohnt es sich durchaus auf wordpress.org zu suchen ob ein solches Plugin schon existiert. Mittlerweile stehen knapp 50,000 Plugins zum Download bereit und die Chance ist groß, dass jemand dein Problem bereits gelöst hat.
Erste Schritte
Bevor du etwas programmierst, brauchst du einen Namen für dein Plugin. Du kannst prinzipiell jeden Namen nehmen. Wenn du dein Plugin aber für Dritte zum Download anbieten willst, sollte der Name einmalig sein, damit er nicht mit anderen Plugin Namen in der WordPress Installation kollidiert. Eine Kombination aus deinem Namen oder dem Namen deiner Firma und der Aufgabe des Plugins ist normalerweise „einmalig genug“. Nehmen wir also als Namen „Novatrend-Hello-World“. Deine Plugin Datei heißt dann novatrend-hello-world.php und liegt in einem Verzeichnis mit dem Namen novatrend-hello-world. Dieses Verzeichnis liegt in [WordPressRoot]/wp-content/plugins. Theoretisch kannst du die Datei auch direkt in das [WordPressRoot]/wp-content/plugins Verzeichnis legen. Ein eigenes Verzeichnis für dein Plugin erhöht allerdings erheblich die Übersicht. Erstelle also mit einem Editor deiner Wahl diese Datei und speichere sie ab ([WordPressRoot]/wp-content/plugins/novatrend-hello-world.php).
<?php /* Plugin Name: Novatrend Hello Welt Plugin URI: http://blog.novatrend.ch/ Description: Hello World WordPress Plugin Version: 1.0 Author: Hagen Graf Author URI: http://hagen.cocoate.com License: GPLv2 */ ?>
Datei – novatrend-hello-world.php
Plugin wird im Dashboard angezeigt
Wenn du nun in deinem Dashboard die Plugins anzeigst, wird auch dein Plugin angezeigt und du kannst es aktivieren!
Plugin im Dashboard bearbeiten
Je nach persönlicher Vorliebe kannst du dein Plugin auch im Dashboard bearbeiten. Dazu klickst die einfach auf Plugins -> Editor oder Bearbeiten in der Plugin Liste.
Hello World!
Nun brauchen wir noch den Programmcode, um den Hello World Text anzuzeigen. Beim Drupal Beispiel erzeugte das neue Modul eine eigene Seite und gab dort den Text Hello World aus. WordPress Plugins werden oft genutzt um in vorhandene Seiten/Beiträge etwas einzublenden. Wenn du dein Plugin um den folgenden Code erweiterst, wird am Ende einer jeden Einzelseite der Text Hello World angehängt.
// Ein Filter wird definiert, der auf die im ersten Parameter übergebene Variable 'the_content' die Funktion 'hello_world' anwendet. add_filter('the_content','hello_world'); // Die Funktion hello_world hängt an den ihr übergebenen Inhalt ($content) einen Text an und liefert den veränderten Wert zurück. function hello_world($content){ // Prüfung ob eine Einzelseite vorliegt (is_single?) if ( is_single() ) { // Text anhängen and Wert zurückgeben return $content . "<h1> Hello World </h1>"; } // keine Einzelseite else { // text unverändert lassen return $content; } }
Auf einer einzelnen Seite sieht das dann so aus:
Plugin mit eigener Seite und Menülink
An dieser Stelle kommt nun der Sinn und Zweck eines Plugins ins Spiel. Wenn ich beispielsweise für mein Plugin eine eigene Seite und eine eigene URL haben möchte, so lege ich während der Aktivierung des Plugins eine Seite und einen Menülink an.
<?php function myplugin_activate() { add_option( 'my_plugin_activated', time() ); // Seite Anlegen // URL anlegen // Text ausgeben } register_activation_hook( __FILE__, 'myplugin_activate' ); ?>
Dieses „Seiten anlegen“ kann auf verschiedene Weise erfolgen. Ich könnte beispielsweise eine WordPress Seite beim Aktivieren des Plugins erzeugen (wp_insert_post()). Beim erfolgreichen Anlegen erhalte ich die ID des Beitrages als Rückgabewert. Mit der ID könnte ich dann den Menülink erzeugen. Als Code würde das etwa so aussehen:
<?php /* Plugin Name: Novatrend Hello Welt ... */ function myplugin_activate() { add_option( 'my_plugin_activated', time() ); // Seite Anlegen $my_post = array(); $my_post['post_title'] = 'Meine Plugin Seite'; $my_post['post_content'] = '... Hallo Welt ...'; $my_post['post_status'] = 'publish'; $my_post['post_author'] = 1; $my_post['post_category'] = array(0); // Insert the post into the database $id = wp_insert_post( $my_post ); // Menülink anlegen } register_activation_hook( __FILE__, 'myplugin_activate' ); ?>
Wenn du das Plugin deaktivierst und wieder aktivierst, wird bei jedem Aktivierungsvorgang eine Seite erzeugt. Nun kommt es darauf an, ob du dieses Verhalten haben willst oder nicht. Wenn du die Seite bei einer Deaktivierung behalten willst, aber bei einer Neuaktivierung die bestehende Seite nutzen möchtest (also keine neue Seite erstellen), musst du dir irgendwie merken, welche Seite dein Plugin bereits erstellt hat. Bei der Aktivierung müsste also eine Abfrage eingebaut werden, ob dieses Plugin in dieser Installation schon mal eine Seite erstellt hat und wenn ja, welche. Diese Funktion würde dann die Möglichkeit bieten beim Löschen des Plugins die bereits erstellte Seite zu löschen.
Eine Übersicht über mögliche Funktionen findest im Plugin Handbook (English) auf der WordPress.org Seite.
Fazit
Die Erstellung eines Plugins geht zunächst sehr einfach und führt zu raschen Ergebnissen. Wenn dein Plugin wirklich etwas tun soll, stellt dir WordPress viele vordefinierte Methoden (Funktionen, Hooks, Filter) zur Verfügung, deren Verwendungszweck du dir nach und nach erschließen kannst.
Links
- Plugin Handbook https://developer.wordpress.org/plugins/
tl;dr: Ein WordPress Plugin zu erstellen ist nicht schwer.
Schreibe einen Kommentar