WP – Der „Rahmen“ für ein Widget Plugin

Die Zeiten ändern sich.

Dieser Beitrag scheint älter als 12 Jahre zu sein – eine lange Zeit im Internet. Der Inhalt ist vielleicht veraltet.

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.

Update: eine aktualisierte Verison ist als Gist 1305241: Widget Tutorial hinterlegt. inklusive Cache Nutzung.


<?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
Download als phps-Datei: widget.phps

8 Kommentare

Kommentare sind geschlossen.