WP - Der „Rahmen“ für ein Widget Plugin
Anzeige
Ein Plugin unternahm den Versuch, dem Anwender von WordPress das erstellen seines Layouts zu vereinfachen.
Kenntnisse in html, geschweige denn php sind dafür nicht notwendig. Mittlerweile hat sich das Plugin durchgesetzt und viele Anwender nutzen diese Art der Templatekonfiguration. Auch ich war davon betroffen, denn eine Anfrage nach einem kleinen Plugin, welches bisher nicht als Widget-Plugin zur Verfügung stand, sorgte dafür, dass ich mich ein wenig mehr mit dem „Rahmen“, der für ein Widget notwendig ist, auseinander setzte. Sinnvoll oder nicht, das muss jeder selbst wissen.
Wer allerdings ein Plugin schreiben möchte, der muss sich an gewisse Regeln halten. Mehr Information dazu gibt es auf der dazugehörigen Site - WordPress Widgets.
Um zusätzliche Funktionen einzubinden, oder bereits bestehende Plugins für das Widget-Plugin zu erweitern steht nun hier ein „Rahmen“ zur Verfügung, der nur angepasst werden muss.
<?php
/*
Plugin Name: Name des Widgetplugins
Plugin URI: http://
Description: Eine kurze Beschreibung
Author: Dein Name
Version: 0.0
License: deine Linzenzvergabe
Author URI: http://
*/
// Widget initialisieren, wenn Widget-Plugin aktiv
function FB_Init_Widget() {
if (!function_exists('register_sidebar_widget'))
return;
// Dein Widget einbinden
function widget_FB_DEIN_NAME($args) {
if (is_home()) {
extract($args);
$options = get_option('widget_FB_DEIN_NAME');
// Optionale Abfrage für die �bergabe von Parametern
// Hier kann man beispielsweise OPTIONS abfragen
$OPTION_1 = $options['OPTION_1'] ? 'checked="checked"' : '';
if ($OPTION_1 == 'checked="checked"') $PARAMETER = 1;
$title = $options['title'];
echo $before_widget;
if ($title != '') {
echo $before_title . $title . $after_title;
}
// Nun rufen wir die Funktion(en) auf, die die neue Funktionalität enthält
Der_Code_des_eigentlichen_Plugins($PARAMETER);
echo $after_widget;
}
}
// Hier steht der Code der Funktion(en), die die eigentliche Funktionalität enthält
function Der_Code_des_eigentlichen_Plugins(Parameter) {
}
// Widget-Control
function widget_control_FB_DEIN_NAME() {
$options = $newoptions = get_option('widget_FB_DEIN_NAME');
if ( $_POST['widget_FB_DEIN_NAME_submit'] ) {
// Abfrage einer Option im Control-Fenster
$newoptions['OPTION_1'] = isset($_POST['widget_FB_DEIN_NAME_OPTION_1']);
// Abfrage des Title im Control-Fenster
$newoptions['title'] = strip_tags(stripslashes($_POST['widget_FB_DEIN_NAME_title']));
}
if ( $options != $newoptions ) {
$options = $newoptions;
update_option('widget_FB_DEIN_NAME', $options);
}
$title = wp_specialchars($options['title']);
?>
<!-- Ab hier die Ausgabe im Control-Fenster des Adminbereiches -->
<p>
<label for="widget_FB_DEIN_NAME_title"><?php _e('Title:'); ?>
<input style="width: 200px;" id="widget_FB_DEIN_NAME_title" name="widget_FB_DEIN_NAME_title" type="text" value="<?php echo $title; ?>" />
</label>
</p>
<p style="text-align:right;margin-right:40px;">
<label for="widget_FB_DEIN_NAME_OPTION_1" style="text-align:right;">OPTION_1
<input class="checkbox" type="checkbox" <?php echo $OPTION_1; ?> id="widget_FB_DEIN_NAME_OPTION_1" name="widget_FB_DEIN_NAME_OPTION_1" />
</label>
</p>
<p style="text-align:right;margin-right:40px;"><?php echo $error; ?>
</p>
<input type="hidden" id="widget_FB_DEIN_NAME_submit" name="widget_FB_DEIN_NAME_submit" value="1" />
<?php
}
// Widget im Admin-Panel hinzufügen - register_sidebar_widget($name, $callback)
register_sidebar_widget('DEIN_NAME', 'widget_FB_DEIN_NAME');
// Zusätzliche Argumente im Widget-Control - register_widget_control($name, $callback, $width , $height);
register_widget_control('DEIN_NAME', 'widget_control_FB_DEIN_NAME', 200, 100);
}
// Integration in WP - add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1);
add_action('plugins_loaded', 'FB_Init_Widget');
?>
Download:

Download als phps-Datei:
widget.phps
17. Oktober 2007 um 21:43
4. Juli 2008 um 16:25
Vielen Dank für dies coole Template.
Super Inline-Kommentare. Und Toll benannte Variablen. Da kommt jeder mit klar.
Ich habe erst weit einer Woche ca. mit WordPress zutun, und bin stolz wie ein großer ein Widget gebastelt zu haben.
Habe es gerade für ein TeamspeakViewer-SidebarWidget benutzt.
)
Die Widget-controll-Seite ist ein wenig hackelig, aber da stellt man eh nur einmal ein
Also noch mal ... Viiiiieeelen Dank
11. Oktober 2008 um 23:44
5. März 2009 um 11:25
Moin Frank!
Ich weiß, der Artikel hier ist inzwischen überholt, aber ich frage dich mal direkt an dieser Stelle, weil's thematisch passt: Ich arbeite an einem Theme auf Kubrick-Basis (ich mag's halt klassisch) und möchte die Anzeige von Kubrick, wo man sich nach seiner Suche befindet, gerne erhalten, aber da die Sidebar "widgetized" ist, verschwindet die bei Widget-Einsatz. Nun habe ich ein Widget daraus gemacht, dass sich problemlos installieren lässt. Aber unter >Darstellung >Widgets im Dashboard wird mein Plug-In trotzdem nicht angezeigt. Vielleicht hast du eine Idee, mir fällt kaum jemand mit mehr Kompetenz diesbezüglich ein.
Hier mal der Code, damit du weisst, wovon ich schreibe:
<?php printf(__('%2$s is awfully sorry for the inconvenience caused.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name')); ?>
<?php printf(__('You are currently browsing the %2$s archives for the %3$s category.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), single_cat_title('', false)); ?>
<?php printf(__('You are currently browsing the %2$s blog archives for the day %3$s.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), get_the_time(__('l, F jS, Y', 'kubrick'))); ?>
<?php printf(__('You are currently browsing the %2$s blog archives for %3$s.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), get_the_time(__('F, Y', 'kubrick'))); ?>
<?php printf(__('You are currently browsing the %2$s blog archives for the year %3$s.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), get_the_time('Y')); ?>
<?php printf(__('You have searched the %2$s blog archives for ‘%3$s’. If you are unable to find anything in these search results, you can try one of these links.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name'), wp_specialchars(get_search_query(), true)); ?>
<?php printf(__('You are currently browsing the %2$s blog archives.', 'kubrick'), get_bloginfo('url'), get_bloginfo('name')); ?>
Hast du eine Idee, warum ich das Plug-In zwar in der dortigen Liste, nicht aber in unter >Widgets entdecken kann? Natürlich kann ich es so auch nicht installieren.
Danke für deine Hilfe!
LG aus Hamburg
Jörg
5. März 2009 um 13:15
Das Widget muss registriert sein, dann erscheint es auch dort:
register_sidebar_widget( _('NAME'), 'id' ). Beim Hookadd_action('widgets_init', 'deine_funktion', 1);muss dann die erste Funktion kommen.1. März 2010 um 19:47
Und ich dachte widgets sind schon vorhanden bei wordpress , muss man diesen Quellqode da oben einbauen?
1. März 2010 um 20:15
@jan: nein, dass ist der Code, wenn man eigene Widgets erstellen will, allerdings nur Für WP kleiner Version 2.8
2. März 2010 um 12:21
Ok danke, muss mich mal mehr mit Programmierung beschäftigen damit man einiges mehr allein einbauen kann