WordPress Coding (Standards)

WordPress entwickelt sich momentan von einem reinen Blog System zu einem ernsthaften CMS. Die Einfachheit und die Funktionsvielfalt trägt zu dieser Entwicklung enorm bei. Für fast jeden Fall gibt es bereits jetzt ein Plugin, welches die gewünschten Funktionen abbildet. Doch hinter diesen Plugins sieht es manchmal sehr düster aus.

Leid und Segen von WordPress

Die Plugin Vielfalt ist bereits jetzt gigantisch. Neue Funktionen für die eigenen Seite oder das Blog sind in Windeseile hinzugefügt. Was so einfach funktioniert, ist für den Anwender ein Segen. In letzter Zeit erhalte ich öfter die Anfrage, ob ich ein Plugin für eine Funktion empfehlen kann. Meist gibt es dann auch noch mehrere, die den Funktionsumfang erfüllen. An dieser Stelle lade ich mir die WordPress-Plugins herunter und betrachte den Quellcode. Und hier kommt dann mein Leid.

Sicherheitslücken

Ein Teil der Plugins wird von ambitionierten Programmieren sehr akribisch erstellt. Diese achten auch auf die Bekämpfung von Schwachstellen, die durch Nutzereingaben ausgenutzt werden können. Jedoch werden einige Plugins “fix” programmiert und sind leider in diesem Punkt ungenügend.
Meist fehlt das sogenannte “escapen” von Nutzereingaben, um sich vor der Manipulation von außen zu schützen.

Aktualität von Plugins

In dem sehr umfangreichen Pool von WordPress Plugins tummeln sich immer mehr veraltete Plugins. Diese sind länger als 2 Jahre nicht mit einem Update bedacht wurden. In der Webentwicklung sind 2 Jahre ein immenser Zeitraum, in dem Neuerungen, aber auch Lücken in Systemen auftreten.
Diese Plugins sind auch im WordPress Repository entsprechend markiert und sollten nur mit bedacht eingesetzt werden.

Performance

Die Geschwindigkeit einer Webseite ist in mehreren Aspekten wichtig. Gerade bei der zunehmenden Bedeutung für Online Marketing möchte einfach niemand ewig auf Webseiten Inhalte warten müssen. Einerseits spielt hier die Auslieferungsgeschwindigkeit der Webseite eine große Rolle, andererseits kann ein Performance Problem bereits davor beginnen. Sauber programmierte und im Vorfeld gut durchdachte Plugins fördern die Grundgeschwindigkeit von Webseiten und entlasten den Server erheblich. SQL Anweisungen weisen oft Geschwindigkeitspotenzial auf. SQL Abfragen in Schleifen sollten entfernt oder reduziert werden.

Core und API Funktionen nutzen

Bei der WordPress Plugin oder Theme Entwicklung muss nicht jeder das Rad neu erfinden. Die meisten Funktionen werden bereits durch WordPress selbst geliefert und warten nur auf den Einsatz in individuellen Plugins. Ich möchte ein kleinen Einblick geben, welche WordPress Funktionen wirklich sinnvoll genutzt werden sollen/können.

Datenbank

Die zentrale Klasse, um auf die Datenbank zuzugreifen nennt sich wpdb.
Diese bringt eigentlich alle Funktionen mit, um Daten zu lesen,bearbeiten oder löschen.
Wordpress unterstützt prepared Statements. Damit lassen sich sogenannte SQL injections weitergehend umgehen.
Um diese Funktion zu nutzen muss, das normale Query einfach mit der Funktion prepare erweitert werden.


$wpdb->query($wpdb->prepare("
DELETE FROM $wpdb->postmeta
WHERE post_id = %d
AND meta_key = %s
",
13, 'gargle'
)
);

Es werden anstatt von Variablen nur Platzhalter eingetragen, ohne Hochkommas. Dadurch können keine Variablen direkt in die SQL Anweisung gelangen und so manipuliert werden.

Validierung

Nutzereingaben sollten grundsätzlich als “nicht vertrauenswürdig” behandelt werden. Diese Eingaben können Inhalte enthalten, die andere Nutzer dann auf andere Seiten umleiten oder Schaden an der Webseite selbst anrichten. Dies ist unter dem Begriff Cross Site Scripting kurz XSS bekannt.

Um diese Sachen weitestgehend zu umgehen, bietet WordPress auch hier Standard Funktionen zum validieren von Nutzereingaben an.

Plugin Coding Standards

Ein dokumentierter, lesbarer und wiederverwendbarer Code wird gepredigt. Die Theorie ist einfach, die Praxis dagegen schwer.
Um dieses Qualitätsmerkmal auch bei der WordPress Plugin Entwicklung zu fokussieren, gibt es bereits Ansätze, die eine Grundstruktur für WordPress Plugins nutzen. Dabei wird eine Art Grundtemplate für die Entwicklung für WordPress Plugins zur Verfügung gestellt.
Eine Möglichkeit bietet The WordPress Plugin Boilerplate 2.0. Es bietet eine gute Grundlage zur Entwicklung von WordPress Plugins und nutzt bereits die WordPress API.

WordPress Plugin Boilerplate Generator

Wer bereits das WordPress Boilerplate von Tom McFarlin nutzt, kann sich seit kurzem über einen Generator freuen. Ich selbst stand immer vor dem Problem “mal schnell” ein Plugin zu programmieren. Da ich das angesproche Boilerplate sehr gern als Grundlage nehme, musste bei jedem neuen Plugin die lange Liste der @todos ausgefüllt werden. Mit der Zeit änderte sich die Struktur und damit auch die Anzahl der Änderungen.

Die Suche nach einem Generator der mir diese lässige Arbeit erleichtert war erfolgreich, doch war der Generator nur bis Version 2.6.1.

Tom McFarlin stellt nun auf seinem Blog einen neuen Generator vor.
Die von enriquechavez.co erstellt Software gehört nun zu meinen “Hot Links”.

WordPress Plugin Boilerplate Generator

Autor: Marcus

Ich bin einer von zwei Geschäftsführern der Conversion Junkies. Zu meinen Themenschwerpunkten gehört das technische SEO, Entwicklungen im E-Commerce und Programmierung von Shopware und WordPress Plugins. Dieses Wissen gebe ich in Schulungen und Consultings gern weiter. Nutzen Sie die Kommentarfunktion für Ihre Fragen. Ich antworte darauf gern. Oder schreiben Sie mir eine E-Mail an marcus@conversion-junkies.de

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Mit dem Absenden Ihrer Anfrage erklären Sie sich mit der Verarbeitung Ihrer angegebenen Daten zum Zweck der Bearbeitung Ihrer Anfrage einverstanden (Datenschutzbedingungen)