So erstellst du ein WordPress Plugin

In diesem Beitrag möchten wir dir zeigen, wie du ein Plugin für WordPress entwickeln kannst. Dabei haben wir uns vorgenommen, uns nur auf das absolute Minimum zu konzentrieren, das benötigt wird, um das Plugin beispielsweise bei WordPress zu veröffentlichen. Unser Plugin dient lediglich dazu, Optionen zu setzen, einen Shortcode auszuführen der einen kleinen Text ausgibt und bei Deaktivierung die Optionen, die bei der Aktivierung gesetzt wurden, wieder deaktiviert. Der Beitrag kann also auch als Anleitung für die Erstellung eines WordPress Plugins gesehen werden.

Ordner und Dateien erstellen

Standardmäßig werden alle Plugins von WordPress unter wp-content/plugins abgelegt. Daher musst du zunächst in diesem Unterordner deine Ordnerstruktur anlegen.

Idealerweise vergibst du für den Ordner den gleichen Namen wie für dein Plugin. Achte am besten darauf für den Namen lediglich Buchstaben und unterstriche zu verwenden.

In diesem Beitrag erstellen wir ein Plugin mit dem Namen Mein Plugin, anstatt eines Leerzeichens verwenden wir einen unterstrich, so dass das Plugin im Ordner mein_plugin abgelegt wird.

WordPress Plugin Struktur
Datei Beschreibung
index.php Nach dem Motto Security by Obscurity. Dient dazu, das Auflisten der Dateien und Ordner in dem jeweiligen Ordner zu verbinden. In der Regel ist diese Funktion bereits bei eurem Server deaktiviert, jedoch kann es noch vorkommen, dass gerade bei günstigen Anbietern, diese Funktion noch aktiv ist.
Readme.md Diese Datei wird verwendet, um die Änderungen an eurem Plugin zu dokumentieren. Idealerweise gebt Ihr hier auch einige Verwendungsbeispiele an und auch den Shortcode (falls verwendet) um das Plugin auf der Webseite zu verwenden.
mein_plugin.php Diese Datei dient in unserem Plugin als Einstiegspunkt für die Anwendung. Hier definieren wir unsere Klasse sowie alle dazugehörigen Funktionen.

Wir schreiben ein WordPress Plugin

Wenn du die Ordner Struktur angelegt hast, wird sich bei dir noch nicht viel getan haben, denn bisher haben wir, wenn es nach WordPress geht, noch kein Plugin hinzugefügt.

Silence is gold

Öffne deine index.php, füge den folgenden Code in deine Datei ein und speichere diese. Dies sorgt dafür das beim Aufruf des Ordners eine leere Seite dargestellt wird.


// Silence is golden. And we agree :)

WordPress Plugin registrieren

Um das Plugin für WordPress erkennbar zu machen müssen wir zunächst in der mein_plugin.php einen Kommentar einfügen, den WordPress später ausliest, um das Plugin zu erkennen.

Öffne die mein_plugin.php und füge dort den folgenden Kommentar ein:


/*
Plugin Name: Mein Plugin
Description: Hello-World Plugin - Das ist ein Beispiel
Version: 1.0
Author: Forge12 Interactive GmbH
Author URI: https://www.forge12.com
License: GPLv2 or later
Text Domain: mein_plugin
*/

Hinweis: Du kannst die Texte nach dem Doppelpunkt jederzeit anpassen und auch im Nachhinein ändern.

Sobald du die Datei gespeichert und einen Blick in die Administrationsoberfläche von Google geworfen hast, solltest du dein Plugin bereits finden können.

WordPress Plugin entwickeln

Vor der Aktivierung deines Plugins wechseln wir zunächst wieder in die Datei mein_plugin.php. Dort fügen wir nun unsere Funktionen hinzu.

Safety first

Damit deine PHP-Datei nicht aus dem Web direkt aufgerufen werden kann fügst du am Anfang deiner Datei die folgenden Zeilen Code ein:


/**
 * security check
 */
if ( ! defined( 'ABSPATH' ) ) {
        exit( 'silence is gold' );
}

Die Konstante ABSPATH wird durch WordPress definiert, bei einem direkten Dateiaufruf ist diese Konstante nicht vorhanden und somit wird das Skript über exit abgebrochen.

Unsere Klasse - Objektorientierte Programmierung

Als nächstes bereiten wir deine Klasse vor, implementieren einen Konstruktor und erstellen ein neues Objekt. Die Klasse ist später für das Verwalten des Plugins verantwortlich.


/**
 * Class mein_plugin
 * @package forge12\mein_plugin
 */
class mein_plugin {
        /**
         * mein_plugin constructor.
         */
        public function __construct() {}
}

$meinPlugin = new mein_plugin();

WordPress Hooks

Damit dein Plugin nun mit WordPress interagiert werden sogenannte Hooks integriert. Das sind Funktionen, die von WordPress zur Verfügung gestellt werden, damit Plugins und WordPress unabhängig voneinander agieren können.

Für dein Plugin verwenden wir nun drei verschiedene Hooks:

  • register_activation_hook
  • register_deactivation_hook
  • add_shortcode

Bei Aktivierung des Plugins: register_activation_hook

Der register_activation_hook wird von WordPress einmalig ausgeführt, wenn das Plugin aktiviert wird. Dieser Hook eignet sich daher besonders für das Durchführen einmaliger Aufgaben wie beispielsweise das Anlegen von Optionen oder CronJobs. In deinem Plugin implementieren wir diesen Hook nun im Konstruktor der Klasse mein_plugin und verwenden Ihn, zum einmaligen Anlegen von Optionen für das Plugin.

Zunächst fügen wir den folgenden Code in den Konstruktor der Klasse mein_plugin ein:


register_activation_hook( __FILE__, array( $this, 'onActivation' ) );

Anschließend erweitern wir die Klasse um folgende Funktion:


public function onActivation() {
    add_option( 'mein_plugin_options', array( 'enabled' => 1 ) );
}

Nun wird bei jeder Aktivierung des WordPress Plugins die Funktion onActivation aufgerufen.

Bei Deaktivierung des Plugins: register_deactivation_hook

Der register_deactivation_hook wird, wie der register_activation_hook, ebenfalls nur einmalig ausgeführt, jedoch erst beim Deaktivieren des Plugins. Die Funktion ist daher ideal dafür geeignet das System wieder zu bereinigen und unnötige Optionen zu entfernen. Für das Plugin implementieren wir eine Funktion, welche die zuvor gesetzten Optionen wieder aus dem System löscht.

Hierfür erweitern wir den Konstruktor der Klasse mein_plugin um folgenden Code


register_deactivation_hook( __FILE__, array( $this, 'onDeactivation' ) );

und implementieren anschließend die Funktion:


public function onDeactivation() {
     delete_option( 'mein_plugin_options' );
}

Hierdurch werden nun die Optionen beim Deaktivieren des Plugins wieder gelöscht.

Zum Hinzufügen eines Shortcodes: add_shortcode

Shortcodes werden von WordPress verwendet, um Code an individuellen Stellen ausgeben zu können. Die Shortcodes können anschließend vom Redakteur auf der jeweiligen Seite eingebaut werden. Häufig verfügt ein Plugin meist über mehrere Shortcodes, die verschiedene Funktionen erfüllen.

Ein WordPress Shortcode kann relativ simpel umgesetzt werden, hierfür verwendet man beispielsweise folgenden Code, um den Shortcode bei WordPress zu registrieren:


add_shortcode( 'mein_plugin', array( $this, 'doShortcode' ) );

In diesem Beispiel wurde der Shortcode mein_plugin genannt und kann nun, sobald die Callback Funktion integriert wurde


public function doShortcode( $atts ) {
   $text = isset( $atts['text'] ) ? esc_attr( $atts ) : '';
   return $text;
}

über [mein_plugin] implementiert werden.

Das fertige WordPress Plugin

Zum Schluss für dich noch einmal der Code für das fertige WordPress Plugin.


/*
Plugin Name: Mein Plugin
Description: Hello-World Plugin - Das ist ein Beispiel
Version: 1.0
Author: Forge12 Interactive GmbH
Author URI: https://www.forge12.com
License: GPLv2 or later
Text Domain: mein_plugin
*/

/**
 * security check
 */
if ( ! defined( 'ABSPATH' ) ) {
        exit( 'silence is gold' );
}

/**
 * Class mein_plugin
 * @package forge12\mein_plugin
 */
class mein_plugin {
        /**
         * mein_plugin constructor.
         */
        public function __construct() {
                /*
                 * Called whenever the plugin will be activated
                 */
                register_activation_hook( __FILE__, array( $this, 'onActivation' ) );
                /*
                 * Called whenever the plugin will be deactivated
                 */
                register_deactivation_hook( __FILE__, array( $this, 'onDeactivation' ) );
                /*
                 * Use to call you own shortcode via [mein_plugin text='Hello World!']
                 */
                add_shortcode( 'mein_plugin', array( $this, 'doShortcode' ) );
        }

        /**
         * Called whenever the Plugin will be activated
         */
        public function onActivation() {
                add_option( 'mein_plugin_options', array( 'enabled' => 1 ) );
        }

        /**
         * Called whenever the Plugin will be deactivated
         */
        public function onDeactivation() {
                delete_option( 'mein_plugin_options' );
        }

        /**
         * Run the shortcode [mein_plugin text='Hello World']
         * @param array $atts
         *
         * @return string|void
         */
        public function doShortcode( $atts ) {
                $text = isset( $atts['text'] ) ? esc_attr( $atts ) : '';

                return $text;
        }
}

$meinPlugin = new mein_plugin();

Haben Sie Fragen zu WordPress, WordPress Entwicklung oder WordPress Plugins?

Wir beraten und betreuen Sie bei Ihren Fragen

Schreiben oder besuchen Sie uns in unserem Webentwicklung & Webdesign Studio im Schwarzwald, Donaueschingen neben Villingen-Schwenningen.