Sidebar
ein-/ausblenden

WP - Hinweise für das Schreiben eines WordPress-Plugins

Plugin für WordPress SEO

Anzeige

WordPress gibt dem Anwender eine einfache Schnittstelle, um zusätzliche Funktionen zu implementieren, die so genannte Plugin-Funktion. Durch diese Funktion kann jede zusätzliche Funktionalität außerhalb der eigentlichen Systems, der Core-Daten, gehalten werden. Somit ist auch das durchführen eines Updates relativ leicht durchführbar.
Sinnvoll ist es grundlegend wenig Plugins zu verwenden, da durch zusätzliche Funktionen auch die Performance leidet. Allerdings ist es oft besser, für eine Anwendung ein Plugin zu hinterlegen, als beispielsweise die Originaldateien zu verändern. Dokumentiert man dies nicht immer, so ist beim nächsten Update schnell etwas zerstört. Außerdem leidet die Performance auch, wenn die Funktion direkt eingebunden ist.
Grundlegend gilt deshalb, das Plugin sollte nach bestem Wissen und Gewissen geschrieben sein. Leider ist das nicht immer leicht. Gerade weil WP so offen ist, kann jeder Anwender ein Plugin schreiben, sobald er ein wenig php-Kenntnis mitbringt. Das kann, muss aber nicht, ein Nachteil sein.
Um das Schreiben eines Plugins ein wenig zu erleichtern und mir einige Gedächtnisstützen zu hinterlegen, ist dieser Artikel entstanden.

Für jedes Plugin gelten einige Regeln, die im folgenden nur kurz aufgezählt sind, da sie auf den jeweiligen Links ausführlich beschrieben werden.

  1. Grundlegend sollen die WordPress-Coding-Standards eingehalten werden.
  2. Ein Plugin kann als einzelnes File vorliegen und eventuelle abhängige Dateien nutzen oder in einem Ordner liegen. Werden mehrere Files benötigt, oder werden bei kommenden Versionen einige Dateien nicht verändert, so bietet sich die Verwendung eines Ordners in jedem Fall an. Außerdem fördert es die Übersicht in Ordner "plugins" aller WP-User.
    Beispiel:
    wp-content/plugins/DEIN_PLUGIN.php
    wp-content/plugins/ABHÄNGIGE_DATEI_ZU_DEINEM_PLUGIN.php
    wp-content/plugins/DEIN_PLUGIN-ORDNER/
  3. Die grundlegende Struktur sollte immer eingehalten werden. Nur so wird die Erkennung des Plugins durch WP sicher gestellt.
  4. Das Plugin sollte vom User über die Admin-Oberfläche von WP aktiviert bzw. deaktiviert werden können.
    Optimal ist ein Plugin, wenn die Anwender keine Änderungen am Code vornehmen müssen.
  5. Ebenfalls sollten mögliche Einstellungen nicht hart im Quellcode geändert werden. Hierbei ist allerdings im Vorfeld zu überlegen, wie oft muss eine derartige Konfiguration geändert werden und ist es sinnvoll die Admin-Oberfläche mit einmaligen Abfragen zu überfüllen.
  6. Eine der wichtigsten Regeln, der Namensraum sollte einmalig sein. Das ist nicht immer einfach, besonders bei der großen Anzahl an zusätzlichen Funktionen für WP.
    Vergebe am besten einen Namen, das gilt auch für die Namen aller verwendeten Funktionen, nicht nur den Pluginnamen, aus dem Namen des Plugins und der erzielten Funktion oder aus dem Autorennamen und der erzielten Funktion.
    Beispiel:
    Funktion reader(), besser ist es den Plugin-Namen mit aufzunehmen: Plugin: RSSImport --> rssi_reader(), noch eindeutiger kann es werden, wenn der Name des Autors mit eingebunden wird: Autor: Frank Bueltge --> fb_rssi_reader()
    Allerdings ist darauf zu achten, dass der Code wenigstens für den Autor noch leserlich bleibt ;-) .

    Den Namen des Plugins kann man recht gut auf den Seiten prüfen, die die WP-Plugins listen.

  7. Insofern das Plugin fertig ist und vielleicht auch von verschiedenen Usern und WP-Versionen getestet wurde, kann es veröffentlicht werden. Dazu empflehle ich folgende Seite: wp-plugins.net

Die grundlegende Struktur

Diese wenigen Zeilen sollten sich immer gleich in jedem Plugin am Anfang der Datei wieder finden. Daraus werden die Inhalte gelesen, damit WP das Plugin erkennt und über die Admin-Oberfläche verwalten kann.
Die letzten drei Zeilen sind nur relevant, wenn die User das Plugin Installer verenden, mehr Infos zum Plugin auf WP Installer Plugin für Plugins.


<?php
/*
Plugin Name: Sowieso (Plugin-Name)
Plugin URI: http://... (Link zur Pluginseite)
Description: Beschreibung (Kurzbeschreibung, xhtml möglich)
Author: Frank Bueltge (Autor[n]name[n])
Version: 1.1 (Versionsnummer)
License: GPL
Author URI: http://bueltge.de (Link zur Website des Autors)
Update Server: http://bueltge.de/.. (Link zum Update-Server, wo das Plugin liegt.)
Min WP Version: 1.5
Max WP Version: 2.0.2
*/

Plugin API

WordPress definiert eine eigene Schnittstelle - Plugin API. Mit Hilfe dieser API wird das Übergeben von Daten enorm erleichtert.
Grundlegend unterscheidet die WP-API nach zwei Arten von "Hooks" - Filter-Hooks und Tätigkeits-Hooks.

  • Filter-Hooks ermöglichen das Hinzufügen und das Entfernen der Filter-Funktionen, die nach spezifizierten Daten fungieren (normalerweise Text). Diese ermöglicht Plugins, Inhalt oder Text schnell zu ändern.
  • Tätigkeits-Hooks ermöglichen das Hinzufügen und das Entfernen von Funktionen, deren Durchführung durch eine Core-Datei von WordPress ausgelöst wird. Dieses ermöglich es Plugins, Funktionen jeder Zeit durchzuführen.

Alle Filter- (Filters) und Tätigkeits-Hooks (Actions) sind auf der Plugin-API-Seite zu finden oder auf dem Blog WordPress Hooks ausführlich erklärt.

Daten in der WP-Datenbank ablegen

WordPress ermöglicht die Speicherung von Daten, ohne eine eigene Tabelle in der Datenbank anzulegen. Besonders für die Konfigurationseinstellungen eines Plugins ist dies sinnvoll. WP erlaubt dabei das schreiben, aktualisieren und Lesen der Einträge in seiner Datenbank.
Allerdings muss man nicht alle Daten in den Tabellen von WP speichern. Besonders bei großen Datenmengen leidet der "normale" Gebrauch von WP. Es ist also im Vorfeld zu überlegen, was für Daten in welchen Mengen gespeichert werden sollen. Überlegungen dazu findet man im Artikel "Creating Tables With Plugins".

Werden die Daten in den WP-Tabellen hinterlegt, so bietet WP folgende Möglichkeiten.

  • Daten hinzufügen --> add_option(NAME[Pflichtwert], WERT, BESCHREIBUNG, AUTOLOAD[default: yes]);
  • Daten lesen --> get_option(NAME[Pflichtwert]);
  • Daten aktualisieren --> update_option(NAME[Pflichtwert], NEUER_WERT);

Funktionen prüfen

Um Komplikationen mit nicht aktivierten Plugins oder defekten Funktionen zu vermeiden, ist es sinnvoll die verwendeten Funktionen abzufragen.
Die notwendige Abfrage habe ich im Artikel "Abfrage einer PHP-Funktion, bzw. WP-Plugins" näher erläutert.
Diese Überlegung kann natürlich auch im Plugin angewandt werden.

Verdeutlichung an einem Beispiel

Im Artikel "WP - Plugin Tipp - Dashboard erweitern" erläutere ich ein wenig mehr an Hand eines Beispiels bzw. direkt am Code.

Weiterführende Links:

13 Kommentare und 5 Trackbacks zu „WP - Hinweise für das Schreiben eines WordPress-Plugins“

  1. 1
    Pingback von WP - Plugin Tipp - Dashboard erweitern - bueltge.de [by:ltge.de]
  2. 2
    Pingback von sprungmarker » Eine offensive Schnellnavigation: bueltge.de
  3. 3
    Pingback von WP - Tutorial, wir schreiben ein simples WP-Plugin - Teil 0 - bueltge.de [by:ltge.de]
  4. 4
    Kommentar von claude

    Hallo!

    hab mir deine tollen WP-Plugin Tutorials durchgelesen. Hab leider selbst kaum Ahnung von PHP...Meinst du man könnte hieraus: http://www.qunst.org/screenshot/downloads.php.zip ein Plugin für WordPress schreiben? Ich hab mir das mal vor langer Zeit zusammengebastelt und es kommt hier zur Anwendung: http://www.qunst.net/index.php?cmd=downloads .
    Jetzt würde ich die Seite aber gerne mit WordPress managen. Vielleicht hast du nen Tipp für mich, wie ich Anfangen kann...
    Danke,
    Claude

  5. 5
    Kommentar von Frank Bültge

    Hallo cloude,
    Um die wechselnden Seiten darzustellen und die nötigen Downloads anzupassen benötigst du eigentlich kein Plugin. Dieses Design und Aufgabe, wie due es auf deiner Downloadsite hast, is tschon jetzt mit WP machbar.
    Warum möchtest du unbedingt ein Plugin?
    LG Frank

  6. 6
    Kommentar von claude

    Hi Frank!

    ich möchte garnicht unbedingt ein Plugin...hab aber nach Download-Plugins gesucht und die schienen mir nicht unbedingt alles leisten zu können, was ich brauch....besonders, dass man die Downloads nur nach 'Artist' sortiert anschauen kann. Fällt dir ein Plugin ein, dass dafür geeignet wäre?
    Danke und viele Grüße!
    Claude

  7. 7
    Kommentar von Frank Bültge

    Ein Sortier-Plugin ist nicht mir nicht bekannt, frage doch mal im Forum oder durchsuche wp-plugins.net.

    LG Frank

  8. 8
    Kommentar von claude

    Hallo!

    hab leider nichts gefunden. Kann aber auch an meinem schlechten Englisch liegen..
    Danke aber!
    claude

  9. 9
    Kommentar von Frank Bültge

    Und was sagt das Forum?

  10. 10
    Pingback von WP - Tutorial, wir schreiben ein simples WP-Plugin - Teil 0 | bueltge.de [by:ltge.de]
  11. 11
    Pingback von Matthias Pospiech » Blog Archive » Development of a Plugin for Wordpress
  12. 12
    Kommentar von gachet

    Hallo,

    ich sitze seit 5 Tagen an einem WordPress problem und weiss einfach nicht mehr weiter. ich denke die Lösung dauert keine 5 Minuten. Ich denke Sie sind die einzige Person die mir evtl. weiter helfen könnte. ich bin auch gerne bereit dafür etwas zu zahlen.

    Hier das problem:

    http://forum.wordpress-deutschland.org/plugins-und-widgets/61846-variable-eines-plugins-einem-andere-nutzen-2.html

    falls irgendwie möglich, würde ich mich über eine Rückmeldung freuen. Danke

  13. 13
    Kommentar von Frank Bültge

    @gachet: dazu kenne ich einfach zu wenig deiner Anforderung; es ist immer am zeitaufwendigsten, sich in das Problem und das Ziel des Users einzuarbeiten. Toscho hilft ja schon und ist ein sehr fähiger Mann in den Themen PHP und WP.

  14. 14
    Kommentar von gundi

    Hi,
    deine Tutorials sind wirklich sehr gut geschrieben und helfen in die WordPress Materie einzusteigen.
    Allerdings ist ein Teil dieses Tutorials sehr unverständlich. Es wäre toll, wenn du folgenden Teil ausführlicher und verständlicher erläutern könntest (vielleicht mit 1-2 Beispielen) :

    Grundlegend unterscheidet die WP-API nach zwei Arten von "Hooks" - Filter-Hooks und Tätigkeits-Hooks.

    Danke für deine Mühen
    gundi

  15. 15
    Kommentar von Frank Bültge

    @gundi: die Erklärungen zu den beiden Hook-Arten steht darunter.

  16. 16
    Kommentar von gundi

    Dass die Erläuterungen direkt darunter stehen, habe ich natürlich auch gesehen ;) . Das Problem ist, dass diese Passage sehr unverständlich formuliert ist. Ich habe dein Tutorial zwar durchgearbeitet, mir ist aber durch die ungenaue Beschreibung der "Hooks" nicht ganz deutlich, wo der Unterschied liegt.
    Deshalb hatte ich um eine etwas genauere Beschreibung gebeten. Aber wie bereits gesagt: Der Rest ist dir super gelungen.

  17. 17
    Kommentar von Frank Bültge

    @gundi: alternativ im Buch lesen, vllt. mal eine Bibliothek nutzen, da wurden meine Text von Lektoren kontrolliert, was hilft ;)

  18. 18
    Kommentar von Pahe

    Hey,

    Erstmal vielen dank für das Tutorial ist echt Super!
    Allerdings hätte ich noch ein Frage!

    Wie kann ich das Plugin auf eine Seite einbinden?

Kommentar schreiben

Kommentarregeln: Bleib cool, kritisch ist in Ordnung, aber wenn du unhöflich bist, dann lösche ich deinen Kommentar. Bitte benutze deinen persönlichen Namen oder Initialen und nicht den Namen eines Unternehmens, dies würde als Spam gewertet und wird gelöscht. Der Zusammenhang zwischen Namen und URL sollte nicht offensichtlich auf Spam hindeuten! ♥ Ansonsten, vielen Dank für den Kommentar und viel Spaß mit meinem Blog.

E-Mail-Benachrichtigung bei weiteren Kommentaren.
Auch möglich: Abo ohne Kommentar.

Kommentar-Hilfe

händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.

Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.

xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>

Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als &lt; und > als &gt; einfügt.

E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.

Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.

Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.

Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.