

Ich bin schon etwas länger damit beschäftigt ein HowTo über die Erstellungen von WordPress Plugins, die Widgets unterstützen, zu schreiben. Heute wollte ich weitermachen. Da viel mir aber die Bitte von Tapedeck ein, der gerne eine Version des sPayPal-Plugins wollte die ohne Widget lauffähig ist. Dieses HowTo soll auf gar keinen Fall eine Aufforderungen sein WP-Theme auf jeden Fall zu widgetisieren. Eher will ich euch mal zeigen, dass daran wirklich nichts schweres dran ist. Da es so gut wie immer der selbe Code ist, will ich hier einfach mal behaupten, dass man keine PHP-Erfahrungen braucht. Die einzige Vorraussetzung die man haben sollte ist, dass man sich ein bisschen damit auskennt, wie WordPress die Layouts – ich sag mal … – oragnisiert.
Layouts bestehen ja bekanntlich aus mehreren Dateien. Das ist zwar kein Muss, aber sehr empfehlenswert wegen der Übersicht. So hat man zum Beispiel eine Datei mit Namen “header.php”, “index.php”, “sidebar.php”,”footer.php”. Natürlich können die Bezeichnungen abweichen, da es ja jedem selbst überlassen wird wie er seine einzelnen Themefragmente nennt.
Für dieses HowTo ist die Datei “functions.php” im Layout-Ordner interessant. Sie ist optional. Es ist also nicht schlimm, wenn ein Layout diese Datei nicht mit sich bringt. Ist sie nicht vorhanden, dann erstellen wir einfach eine neue “functions.php”.
Jetzt ist die Frage wieviele Sidebars man überhaupt hat und welche dieser Sidebars widgetready gemacht werden sollen. Denn jede einzelne Sidebar muss in der “functions.php” registriert werden. Das kann man mit der Funktion “register_sidebar()” einfach und schnell. Hier also ein kleines Beispiel für eine Sidebar:
<?php
if ( function_exists(‘register_sidebar’) )
register_sidebar(array(
‘name’ => ‘RechteSidebar’,
‘before_widget’ => ‘<li>’,
‘after_widget’ => ‘</li>’,
‘before_title’ => ‘<h2>’,
‘after_title’ => ‘</h2>’,
));
?>
Der Funktion “register_sidebar()” übergeben wir also ein Array. Mit den Optionen before_widget und after_widget kann man die Ausgabe jedes einzelnen Widgets beeinflussen. Traditionell sind aber Listen (<li></li>). Mit den Optionen before_title und after_title kann man die Überschrift der einzelnen Widgets beeinflussen. Falls man mehrere Sidebars registrieren möchte, dann kann man die Funktion natürlich mehrmals aufrufen. Wichtig dabei ist nur, dass man den Namen ändert.
Wenn wir das Layout jetzt in unserem Adminbereich aufrufen und dann zum Menüpünkt “Widgets” gehen, dann sehen wir also eine Sidebar in der wir die einzelnen Widgets sehen. Das ist ja schön und gut, aber es wird uns nichts bringen da wir die registrierte Sidebar noch nirgendwo im Template aufrufen. Da ich in diesem Beispiel von einer rechten Sidebar ausgehe (siehe Name der registrierten Sidebar) öffnen wir also die Datei “sidebar.php”. Dort wird man das bisherige Menü finden. Also den Aufruf der Kategorieausgabe, etc. …
Diese modifizieren wir nun. Hier ein Ausschnitt:
<div id=”sidebar”>
<ul>
<?php /* Widgetized sidebar, if you have the plugin installed. */
if ( !function_exists(‘dynamic_sidebar’) || !dynamic_sidebar(‘RechteSidebar’) ) : ?>
<li>
<h2>Textbox</h2>
<ul>
<li>Der Text …</li>
</ul>
</li>
<?php endif; ?>
</ul>
</div>
Das war es eigentlich schon. Wir setzen vor dem Aufruf der eigentlich Sidebar eine Abfrage. In Klartext übersetzt bedeutet die IF-Abfrage nichts anderes als: “Wenn Funktion ‘dynamic_sidebar’ nicht existiert, oder die dynamische Sidebar ‘RechteSidebar’ nicht registriert ist, dann …”
Und dann kommt die alte Sidebar. In diesem Beispiel also einfach nur eine Überschrift mit der Bezeichnung “Textbox” und einem Text “Der Text …”. Diese Textbox würde nun immer dann erscheinen, wenn unsere “RechteSidebar” nicht geladen werden kann, oder wenn die dynamische Sidebar leer ist. Wie man sieht muss man also nicht völlig auf die alte Methode verzichten. Vielleicht hilft dieses HowTo ja sogar dem Einen oder Anderen.
Da ich kein begnadeter Erklärbär bin will ich nochmal dazu aufrufen mich bei Unklarheiten zu fragen.
Tags: howto, plugin, Proggen, widget, wordpress, wp














Mein Theme ist schon widget-ready aber ich mag diese Widgets einfach nicht – Möchte selbst über das Aussehen und die Handhabung meiner Sidebar entscheiden können
Oh, sry. Ich werde es später ändern. Bin nur gerade etwas zu interessiert/beschäftigt in meinen vServer