Kleines Howto zum erstellen von WordPress Plugins


Heute Mittag habe ich mein erstes WordPress Widget erstellt. Zu bestaunen ist es links oben in der Sidebar:) Es ist eine Wetteranzeige der einfachsten Art, bei iGoogle geklaut.

Der Aufbau des Widgets gestaltet sich wie folgt:

Zuerst wird ein Kommentar erstellt, hier befinden sich Metainformationen zum Widget:

/*
Plugin Name: schmie_Wetter
Plugin URI: http://www.schmiddi.co.cc
Description: WetterWidget fuer Deutschland
Author: Michael Schmitt (schmiddim@gmx.at)
Version: 1.0
Author URI: http://www.schmiddi.coc.cc
License: GPL 2.0, @see http://www.gnu.org/licenses/gpl-2.0.html
@date 09.03.09
@desc WordPress plugin zum anzeigen des Wetters
*/

Nun das eigentliche Widget:

function widget_intit(){
       #Falls die Registerfunktion nicht vorhanden ist, Abbruch
	if ( !function_exists('wp_register_sidebar_widget') )
	     return;

       #--- Ausgabe Frontend ---
	function  schmie_wetter($args) {
		extract($args);                       #Per Post uebergebene Argumente
		# Auslesen der Optionen
		$options = get_option('schmie_wetter');
		$titel = htmlspecialchars($options['titel'], ENT_QUOTES);
		$plz=htmlspecialchars($options['plz'], ENT_QUOTES);
		$vorschau=htmlspecialchars($options['vorschau'], ENT_QUOTES);
		# Ausgabe des Widgets
		echo $before_widget . $before_titel;

		echo "titel";
                /* .... */
	}#protocol
              /* ... */
}#widget_init

Was noch fehlt wäre die Konfiguration fürs Widget, wird im WP-Admin unter Appearance->Widgets angezeigt:

	# back end controller
	function schmie_wetter_control() {

		#Auslesen der Optionen
		$options = get_option('schmie_wetter');
		#Falls leer Defaultwerte
		if ( empty($options) )  {
			$options = array('titel'=>'WetterWetter',
	         				  'plz'=>'66679',
						  'vorschau'=>'4'
	         				  );
		}#fi
		#der Name des Widgets wird beim POST angehaengt, um die uniqueness zu gewaehren
		if ( $_POST['schmie_wetter-submit'] ) {
			$options['titel'] = strip_tags(stripslashes($_POST['schmie_wetter-titel']));
			update_option('schmie_wetter', $options);
		}
                /* Die aktuellen Werte sollen ja auch im Kontrollcenter angezeigt werden
                    Eingabefeld fuer den Widgettitel und ein Label
               */

		$titel = htmlspecialchars($options['titel'], ENT_QUOTES);
		echo '
<p style="text-align:right;"><label for="schmie_wetter-titel">Titel
<input style="width: 150px;" id="schmie_wetter-titel" name="schmie_wetter-titel" type="text" value="'.$titel.'" /></label>
';
# noch ein Hiddenfield mit dem Namen des Widgets und einer Beschreibung, die im Widgets-Menue angezeigt wird

		echo '
';
	}

	wp_register_sidebar_widget('schmie_wetter', 'schmie_Wetter',
                                   'schmie_wetter',
	array(
                                         'classname' => 'schmie_wetter',
        	                             'description' =>'Yeah' ) );
	wp_register_widget_control('schmie_wetter', 'schmie_Wetter',
                                   'schmie_wetter_control',
	array( 'width' => 300  ) ); #Breite des Widgets

}
#Registrieren des Widgets
add_action('widgets_init', 'schmie_wetter_init');

Nur dieser Funktionsrumpf muss implementiert werden, Klassen, Funktionsaufrufe – was auch immer – kann man halten wie man will 🙂
Die Installation gestaltet sich wie immer. PHP Datei in einen Ordner legen, diesen nach [Wordpress-Folde]/wp-content/plugins kopieren, das Plugin aktivieren und nun unter Widgets das Mofa aktivieren.

Advertisements
Dieser Beitrag wurde unter php, wordpress veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s