Kleine CodeCrowd von programmieren lernen
Leon Hoffmann von codeCrowd Leon, 9 Jan 2020

Notiz: WordPress Plugin Development Grundlagen

Programmieren Lernen Blog Featured-Thumbnail WordPress Plugin Development Grundlagen

In der Kategorie NOTIZveröffentliche ich meine persönlichen Notizen, die ich mache, während ich selbst neue Themenbereiche erlerne. Vielleicht helfen diese Notizen ja auch dir.🤓

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-content
  • includes_url() Der /wp-includes Ordner
  • content_url() Der /wp-content Ordner
  • admin_url() Der Link zum deine-website.de/wp-admin Dashboard
  • site_url() Der Wert der in der wp_options Datenbanktabelle für siteurl
  • home_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.

Kommentare