Teil 2
4. Testen, Absichern und Feinschliff
4.1. Codequalität und Sicherheit
Bevor ein Plugin an andere Nutzer verteilt wird, sollte es durch einen gründlichen Code-Check gehen. Dazu gehören:
- Sanitizing & Escaping: Jede Benutzereingabe (Formulare, GET/POST-Variablen) muss gefiltert und abgesichert werden. Nutze Funktionen wie
sanitizetextfield()
odereschtml()
. - Nonces & Permissions: Verhindere unautorisierte Änderungen mit
checkadminreferer()
und überprüfe Benutzerrechte viacurrentusercan()
. - Keine direkten Datei-Zugriffe: Vermeide Aufrufe von
$FILES
,$SERVER
oder direkten Includes ohne vorherige Prüfung vonABSPATH
.
Ein Beispiel für sichere Formularverarbeitung:
if (isset($_POST['submit'])) {
check_admin_referer('amm_save_opts');
if (current_user_can('manage_options')) {
update_option('amm_admin_maintenance_opts', sanitize_text_field($_POST['message']));
}
}
4.2. Testing mit WP\DEBUG
In deiner wp-config.php
sollte während der Entwicklung stehen:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Fehler und Warnungen landen dann in /wp-content/debug.log
.\
Vor der Veröffentlichung immer mit aktivem Debug testen – das deckt Deprecated-Funktionen und Syntaxfehler zuverlässig auf.
4.3. Internationalisierung (i18n)
WordPress erwartet, dass jedes Plugin mehrsprachig nutzbar ist.\
Nutze die Standardfunktionen:
__('Text', 'admin-maintenance-message');
_e('Text', 'admin-maintenance-message');
Danach kann mit makepot
oder Tools wie Poedit eine .pot
-Datei erstellt werden.\
Die Übersetzungen gehören in /languages/
.
5. Der Weg zur Freigabe: WordPress.org Review-Prozess
5.1. Das Readme-Format
Die readme.txt
ist mehr als Deko – sie ist Pflicht und Grundlage für die Plugin-Seite.\
Sie folgt einem festen Format:
=== Plugin Name ===
Contributors: deinname
Tags: admin, notice, dashboard
Requires at least: 6.0
Tested up to: 6.8
Stable tag: 0.1.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
== Description ==
Hier kommt die Hauptbeschreibung deines Plugins hin.
== Installation ==
1. Plugin hochladen
2. Aktivieren
3. Unter Einstellungen konfigurieren
== Changelog ==
= 0.1.5 =
* Erste stabile Version
Der Readme-Validator auf wordpress.org/plugins/developers/readme-validator hilft, Fehler zu finden.
5.2. Der Review-Prozess
Sobald du dein Plugin über die Seite Add Your Plugin einreichst, überprüft ein Freiwilligenteam den Code.
Typische Beanstandungen sind:
- Inline-Styles (
<style>
) stattwpenqueuestyle()
- Fehlende Prefixe bei Klassen oder Optionen
- Unsichere Funktionen (
eval
,base64_decode
, direkte DB-Zugriffe) - Fehlende Übersetzungstexte oder unvollständiger Header
Nach der Freigabe erhältst du Zugriff auf ein SVN-Repository, z. B.:
https://plugins.svn.wordpress.org/admin-maintenance-message
6. Arbeiten mit SVN
6.1. Grundstruktur im Repository
Das WordPress-Plugin-Verzeichnis erwartet:
/trunk # Aktuelle Entwicklungsdateien
/tags # Versions-Ordner (z. B. /tags/0.1.5)
/assets # Banner, Screenshots, Icons für Pluginseite
6.2. Upload-Schritte
svn checkout https://plugins.svn.wordpress.org/admin-maintenance-message
svn add --force trunk
svn commit -m "Initial Commit"
svn copy trunk tags/0.1.5
svn commit -m "Tag 0.1.5"
Nach einigen Minuten erscheint dein Plugin unter:\
https://wordpress.org/plugins/admin-maintenance-message
7. Nach der Veröffentlichung
7.1. Updates veröffentlichen
Erhöhe die Version in readme.txt
und im Plugin-Header, dann wiederhole den Commit-Vorgang:
svn commit -m "Update to 0.1.6"
svn copy trunk tags/0.1.6
svn commit -m "Tag 0.1.6"
7.2. Plugin-Assets
Bilder kommen ins Verzeichnis /assets/
im SVN-Root:
assets/
├── banner-772x250.png
├── banner-1544x500.png
└── icon-256x256.png
Sie werden automatisch auf der Plugin-Seite angezeigt.
8. Fazit: Warum sich der Aufwand lohnt
Ein Plugin im offiziellen Verzeichnis zu haben, bedeutet mehr als nur Sichtbarkeit. Es steht für:
- Vertrauen in die Codequalität
- Erfahrung im Umgang mit WordPress-Standards
- Nachhaltige Weiterentwicklung
Der Prozess kann anstrengend sein – aber er schärft das Bewusstsein für sauberen Code, Sicherheit und Dokumentation. Und er ist ein großartiger Beitrag zur Community.