dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

WordPress und register_sidebar

Jeder, der ein WordPress Theme erstellt, wird warscheinlich die Widget-Funktionalität in sein Theme einbauen. Die Widgets werden in der functions.php erstellt, hier aus der Code aus dem Default Theme:

if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '<li id="%1$s" class="widget %2$s">',
        'after_widget' => '</li>',
        'before_title' => '<h2 class="widgettitle">',
        'after_title' => '</h2>',
    ));

Wie wir ja alle wissen, gibt es die Funktion register_sidebar seit der Version 2.2. Jetzt stell ich mal die Frage: Wie lange noch soll man abfragen, ob die Funktion überhaupt existiert? Irgendwie ist das für mich schon ein Widerspruch. Das Default Theme der Version 2.7 fragt nicht etwa ab, ob have_comments (ein neuer Template Tag der Version 2.7) existiert, aber register_sidebar wird abgefragt. Ich denke mal, die haben das einfach vergessen und alle Welt denkt, das muß so sein.

Nicht, daß mich jemand falsch versteht. Die Abfrage ist nicht falsch, für mich im Default Theme der Version 2.7 einfach nur sinnlos.

Und da wir schon bei “Wirres mit register_sidebar sind”, ein Premium Theme eines revolutionären Themeautors verwendet gleich 3x die Abfrage:

<?php
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=>'Home Sidebar',
'before_widget' => '<div class="block">',
'after_widget' => '</div><div class="blockfooter"></div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
));
?>
<?php
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=>'Post Sidebar',
'before_widget' => '<div class="block">',
'after_widget' => '</div><div class="blockfooter"></div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
));
?>
<?php
if ( function_exists('register_sidebar') )
register_sidebar(array('name'=>'Page Sidebar',
'before_widget' => '<div class="block">',
'after_widget' => '</div><div class="blockfooter"></div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
));
?>

Was denkt der Theme-Autor dabei? Erstens: Machen wir es dem PHP Parser nicht zu einfach und machen nach jeder Funktion das PHP tag wieder zu und vor einer neuen wieder auf.
Zweitens: Man weiß ja nie, ob es die Funktion beim 2. Widget noch gibt…
und Drittens ist der Code nahezu identisch bis auf den Namen der Sidebar. Das geht auch einfacher:

<?php
$sidebars = array('Home Sidebar', 'Post Sidebar', 'Page Sidebar');
foreach($sidebars as $name) {
	register_sidebar(array('name'=> $name,
		'before_widget' => '<div class="block">',
		'after_widget' => '</div><div class="blockfooter"></div>',
		'before_title' => '<h3>',
		'after_title' => '</h3>',
	));
}
?>

Wie gesagt, das ist alles nicht böse gemeint und auch nicht wirklich falsch. Manchmal gehts halt doch einfacher ;)

5 Kommentare
  1. sokai sagt:

    Hey Micha… – Der letzte Code-Schnipsel sieht ja gut aus… :)
    (Ich hatte bis jetzt auch in einem Theme für jede der vier Sidebars ein komplettes “register_sidebar” mit identischem Code, bis auf den Titel drin ;) )

    Blöd is nur, dass ich nach der Änderung aus deinem Vorschlag nun komischerweise gar keine Sidebar mehr mit dem Theme angezeigt bekomme… :(
    (Auch in der Theme-Preview sind keine Sidebars drin…)

    Hast du ne Idee, ob sich bei dir oben vllt. nen Teufelchen eingeschlichen hat (, vllt. ;) )?

    sofar | sokai

  2. Micha sagt:

    Hm, Ich habe es vorher bei mir probiert, es funktioniert.
    Ich sehe auch keinen Fehler.

  3. sokai sagt:

    *eieiei&mitdemkopfvordiewandrenn*

    …natürlich müssen die Namen der Sidebars in der functions.php auch mit denen in den Template files übereinstimmen… – dann klappts auch mit der Anzeige!

    *sryme* sokai

  4. Melli sagt:

    Hallo,
    hab ne frage past gar nicht zu deinem Thema aber vielleicht hättest du Lust sie mir trotzdem zu beantworten. Wie machst du das, das du Werbung auf deine Seite bekommst? Wie geht das? Ich möchte es auch schon seit längerem aber irgendwie weis ich einfach nicht wie es geht.
    Würde mich freuen wenn du dich mal meldest.

    Danke im Vorraus.
    Melli

  5. Micha sagt:

    Melli, du bist bei wordpress.com. Keine Ahnung, ob du dort Werbung einblenden darfst und wie das geht. Auf alle Fälle mußt du dich bei Google Adsense anmelden, um überhaupt an dem Programm teilnehmen zu können.

Einen Kommentar schreiben