Entwicklung & Design

WordPress: Schnelleinstieg in die Entwicklung eigener WordPress-Widgets

Seite 3 / 4

Anzeige der Daten im Frontend

Anhand eines einfachen Zitat-Widget wird nachfolgend die Nutzung der einzelnen Methoden verdeutlicht. Ausgegeben werden die Daten im Frontend über die Methode widget($args, $instance). Neben den eigentlichen Daten empfiehlt es sich, auch den Titel des Widget auszugeben. Dabei wird die Ausgabe des Titels modifiziert durch das, was um den Titel herumgewickelt werden soll.

Umschlossen wird die gesamte Ausgabe dann von dem, was vor und nach dem Widget im Rahmen des Themes festgelegt ist. Verantwortlich dafür sind die Werte, die beim Aufruf von „register_sidebar“ im Theme angegeben wurden. Eine einfache Ausgabe sieht dann entsprechend so aus:

PHP
<function widget($args, $instance) {
	extract( $args );
	$title = apply_filters('widget_title', $instance['title']);

	echo $before_widget;

	if ( $title )
		echo $before_title . $title . $after_title;
		echo '<quote>'.$instance['zitat'].'</quote>';
		echo '<i>'.$instance['quelle'].'</i>';

	echo $after_widget;
}

Listing 6

Die Methode wird mit den beiden bereits genannten Parametern „$args“ und „$instance“ aufgerufen. Zunächst werden mit Hilfe der Funktion „extract“ Argumente wie „$before_title“ oder „$after_widget“ zur Verfügung gestellt. Anschließend wird ein so genannter Filter-Haken (Hook) [5] für den Titel des Widget eingebunden. Innerhalb der Methode stehen die Argumente von „register_sidebar“ als einzelne Variablen zur Verfügung. Ihr Wert richtet sich immer danach, was im Theme dafür angegeben wurde und lässt sich nicht im Backend ändern. Die Instanz-Variablen dagegen werden unmittelbar durch die im Backend festgelegten Optionen des Widget beeinflusst. Dazu bedarf es allerdings eines entsprechenden Formulars, über das die Werte eingegeben werden können.

Backend-Formular für Widgets erstellen

Um ein Optionsformular für Widgets zu generieren, genügen bereits wenige Zeilen Code. Die Widget-Basisklasse von WordPress stellt Methoden wie „get_field_id()“ und „get_field_name()“ zur Verfügung, die den größten Teil der Arbeit übernehmen.

PHP
function form($instance) {  

		$default_settings = array( 'title' => 'Zitat des Tages', 'zitat' => '', 'quelle' => '' );
		$instance = wp_parse_args( (array) $instance, $default_settings ); 

		?>
		<p>
			<label for="<?php echo $this->get_field_id( 'title' ); ?>">Titel:</label>
			<input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" />
		</p>
		<p>
			<label for="<?php echo $this->get_field_id( 'zitat' ); ?>">Zitat:</label>
			<input id="<?php echo $this->get_field_id( 'zitat' ); ?>" name="<?php echo $this->get_field_name( 'zitat' ); ?>" value="<?php echo $instance['zitat']; ?>" style="width:100%;" />
		</p>
		<p>
			<label for="<?php echo $this->get_field_id( 'quelle' ); ?>">Quelle:</label>
			<input id="<?php echo $this->get_field_id( 'quelle' ); ?>" name="<?php echo $this->get_field_name( 'quelle' ); ?>" value="<?php echo $instance['quelle']; ?>" style="width:100%;" />
		</p>

<?php

	}

Listing 7

Zunächst werden Standardwerte für das Widget hinterlegt, die benutzt werden, wenn das Widget im Backend in die Seitenleiste gezogen wird. Diese Werte können später überschrieben werden. Dem Array „$instance“ werden dann entweder die Standardwerte zugewiesen oder, sofern vorhanden, die Werte der Instanz aus den Optionsfeldern.

Der nachfolgende HTML-Teil stellt die Eingabemaske zur Verfügung. Über die beiden Methoden „get_field_id“ und „get_field_name“ werden dem Formular automatisch die richtigen Bezeichner zugeordnet, sodass die Werte beim späteren Speichern korrekt übertragen werden. Über das Array „$instance“ lassen sich darüber hinaus in den Eingabefeldern die bisher gespeicherten Werte anzeigen.

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung