Home > Plugin, Wordpress, php > Einstieg in das Plugin Development für WordPress

Einstieg in das Plugin Development für WordPress

March 12th, 2009

Glücklicherweise hat mich jemanden gefunden der mich für die Entwicklung eines WordPress Plugins bezahlt. Hallelujah :-) So bekomme ich die Einarbeitung in dieses feine Stückchen Software auch noch bezahlt. Die Erfahrungen die ich während der Entwicklung des Plugins mache will ich in diesem Artikel dokumentieren.

Links

  • WordPress Plugin API
    Erläutert die grundsätzliche Funktionsweise der API, insbesondere Sinn und Zweck von  Hook, Action und Filter
  • Offizielles How To
    Ein Einführung in die Materie
  • Filter Referenz
    Wordpress API/Filter Referenzseite auf WordPress.org
  • Action Referenz
    Wordpress API/Action Referenzseite auf WordPress.org
  • Hooks Datenbank
    Zeigt alle verfügbaren Hooks, zu allen Releases von WordPress
  • WordPress Funktions Referenz
    Grundlegende Funktionen für die WordPress Programmierung
  • Constants
    Eine Liste aller in WordPress verfügbaren PHP Konstanten
  • WPDB
    Die WordPress Datenbank Klasse. Braucht man Anfangs sicher öfter mal, obwohl der Zugriff auf die Datenbank erfrischend mit dieser Klasse erfrischend unkompliziert ist.

Plugin Namen und Dateien

Die ersten Gedanken die man sich macht sollten dem Namen des Plugins gelten. Das Howto empfiehlt eine Google Recherche nach dem Namen und es sollte wenn möglich ein sprechender Name sein, der einen Bezug zur Funktion des Plugins hat. Das wichtigste ist aber sicherzustellen dass der Name eindeutig – Unique – ist. Es gibt eine ganze Reihe von Plugins und es werden ständig mehr, da sollte der Name so gewählt werden das Konflikte ausgeschlossen werden. Ich denke das ich meine Plugins Prefixen werde.

Ein Plugin kann aus einer einzelnen PHP Datei bestehen oder aus einer Reihe verschiedenster Dateien, die dann in einem Ordner zusammengefasst werden. Plugins werden einfach im Ordner /wp-content/plugins abgelegt, Ordner ebenso. Es ist möglich viele PHP Dateien in einem Ordner abzulegen. In diesem Fall sollte der Name PHP-Hauptdatei  vom Namen  des Ordner abgeleitet sein.

Plugin Header

Die Hauptdatei enthält die Plugin Header. Diese werden von WordPress automatisch erkannt und in der Plugin Verwaltung genutzt.

/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
*/

Diese Kommentare am Kopf der “Main” PHP Datei reichen aus um in der Plugin Verwaltung folgendes zu erzeugen.

Wie die Header eines Plugins in der Plugin Verwarltung genutzt werden

Wie die Header eines Plugins in der Plugin Verwaltung genutzt werden

Das Plugin lässt sich bereits an dieser Stelle aktivieren, obwohl es ausschließlich aus PHP Kommentaren besteht. Bei der Beschreibung muss man sich auch nicht zurückhalten und kann durchaus Zeilenumbrüche verwenden.

Hooks

Um nun mit dem System interagieren zu können bietet WordPress einen Hook-Mechanismus an. Dieser Mechanismus ermöglicht es während der Abarbeitung eines Requests eigene Funktionen auf zurufen, und so Einfluss auf den nehmen zu können. Das “Einhängen” in den Prozess der Seitenerzeugung geschieht entweder über “Actions” oder “Filter”, die in den Ablaufstack registriert werden. Zur Zeit gibt es 800 verschiedene Hooks die verfügbar sind.

Action

Ein Actions sind Einstiegspunkte die der WordPress Core während der Seitenerzeugung oder auf bestimme Ereignisse (Events) hin auslöst. Methode add_action() registiert einen beliebigen Funktionsaufruf, der ausgeführt wird, wenn der Ablauf Stack bei der Action angelangt ist. Zur Action Referenz

// add_action($tag, $function, $priority = 10, $accepted_args = 1);
add_action('publish_post', 'meine_plugin_function', 10, 1);
  • $action Der Name der Action
  • $function Der Name der Callback Funktion
  • $priority (default ist 10) 5 läuft eher als 15
  • $accepted_args Die Anzahl an Argumenten die diese Funktion erwartet

Filter

Funktionieren im Prinzip genauso wie Actions, der Unterschied ist das in jedem Fall Daten durch durch einen Filter geleitet und verarbeitet werden. Es gibt sicher viele Aufgaben die sich sowohl mit einem Filter als auch mit einer Action erledigen lassen. Das Registrieren wird durch add_filter() erledigt, die Argumente sind die selben wie bei add_action(). Zur Filter Referenz

add_filter('hook_name', 'your_filter', [priority], [accepted_args]);

Herrausfinden welche Filter und Aktionen zur Verfügung stehen

Leider habe ich bisher keine Funktion gefunden die anzeigt welche Filter und Aktionen während der Seitenerzeugung aufgerufen. Da es derzeit über 800 Hooks gibt und längst nicht jeder Hook in jedem Request zur Verfügung steht wäre, eine solche Funktion den meisten Entwicklern sicher höchst willkommen. Es gibt aber eine relativ einfache Zwischenlösung für dieses Problem. Verantworlich für das Abfeuern der einzelnen Hooks sind zwei Funktionen in der Datei /wp-includes/plugin.php. Die beiden Funktionen heissen apply_filters() und do_action(). In beiden Funktionen wird am Ende eine For-Schleife durchlaufen, an dieser Stelle kann man den Inhalt des Arrays $the_ ausgeben und bekommt so Informationen über das Ablaufverhalten eines Requests.

do {
	foreach ( (array) current($wp_filter[$tag]) as $the_ ){
		print_r($the_); // Diese Zeile einfügen...
		if ( !is_null($the_['function']) )
			call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
	}
 
} while ( next($wp_filter[$tag]) !== false );

Im nächsten Teil wird gezeigt wie man Links in die verschiedenen Menüs einfügt

Plugin, Wordpress, php ,

  1. March 21st, 2009 at 19:36 | #1

    So, ich hab nene Problem, ich hab ne Funktion, die 2 Argumente braucht, also habe ich das so gemacht:
    add_action(‘the_content’, ‘eknoes_AddAny_addToContent’, 5, 2);

    Woher will WP dann wissen, welches das 2. Argument ist? Dafür brauch ich ne Lösung :/

  1. No trackbacks yet.