Читать книгу Entwicklung von WordPress-Plugins - Onno Gabriel - Страница 13
Einbindung über die Widget-Klasse
ОглавлениеWidgets sind mit einem speziellen Inhalt gefüllte Bereiche auf der WordPress-Webseite. Widgets können abhängig vom Theme nahezu beliebig angeordnet werden – typischerweise in der Seitenleiste, im Footer-Bereich oder auch im Admin-Dashboard – und bilden damit modulare, in sich geschlossene Komponenten. Mit solchen Widgets können auch Nicht-Entwickler ihre Webseiten schnell und einfach um Funktionen erweitern. Ein Plugin kann ein oder auch mehrere solcher Widgets zur Verfügung stellen.
Für das Erzeugen eigener Widgets bietet WordPress die objektorientierte Klasse WP_Widget
an. Ein Widget ist daher technisch gesehen nichts anderes als ein PHP-Objekt der WP_Widget
-Klasse, welches einen Seiteninhalt ausgibt, sobald die dafür vorgesehene widget()
-Methode aufgerufen wird.
Die Klasse WP_Widget wird über die Datei wp-includes/class-wp-widget.php
zur Verfügung gestellt. Diese PHP-Datei stellt mit ihren vielen Kommentaren selbst eine umfassende und lesenswerte Dokumentation der Widget-Klasse dar.
Ein neues Widget wird erstellt, indem eine eigene Klasse als Erweiterung von WP_Widget
definiert wird. Dadurch werden alle für das Widget notwendigen Attribute und Methoden an die neue Widget-Klasse vererbt. Vier der Haupt-Methoden werden mit eigenem Code überschrieben, so wie im Folgenden beispielhaft in der Klasse Mein_Widget
dargestellt:
<?php class Mein_Widget extends WP_Widget { // Der Konstruktor ruft den Konstruktor der // Elternklasse auf und legt so Widget-Titel // und -Beschreibung fest public function __construct() { parent::__construct( 'mein_widget', // Widget-ID esc_html__( 'Widget-Title', 'text_domain' ), array( 'description' => esc_html__( 'Mein erstes Widget', 'text_domain' ), ) ); } // Ausgabe des Inhalts des Widgets public function widget( $args, $instance ) { // Ausgabe des Widget-Inhaltes } // Ausgabe des Formulars mit den Einstellungen // im Widget-Administrationsbereich aus public function form( $instance ) { // Ausgabe der Einstellungen } // Verarbeitung und Speicherung der Einstellungen public function update($new_instance, $old_instance) { // Verarbeitung der zu speichernden Einstellungen } } ?>
Im Beispiel kommt die Escape-Funktion zum Einsatz, mit der problematische Zeichen bei der Ausgabe maskiert werden. Diese wird später im Kapitel Absichern von Ausgabedaten beschrieben.
Um WordPress dieses neue Widget bekannt zu machen, wird eine Funktion zur Registrierung dieses Widgets über add_action()
an den Hook widgets_init
gehängt:
add_action( 'widgets_init', function(){ register_widget( 'Mein_Widget' ); });
Damit steht das Widget im Administrationsbereich unter Design/Widgets zur Verfügung und kann von den Benutzern an die gewünschte Position auf der Webseite platziert werden.
Im Folgenden werden die vier Funktionen der neuen Widget-Klasse genauer beschrieben. Sie dienen dem Erzeugen des neuen Widgets durch den Konstruktor, dem Anzeigen des Widget-Inhaltes, des Formulars zur Widget-Konfiguration und zur Verarbeitung der Konfiguration.