-->

Ein WordPress-Thema erstellen – Teil X

von Clemens Gull


Beim letzten Beitrag aus dieser Reihe waren wir soweit, dass wir das Thema zum ersten Mal testen konnten.  Dazu gehen wir in das Backend von Wordpress und öffnen den Bereich Design mit einem Klick. Danach finden wir rechts unser Thema prettyNew vom Autor Anonymous. Direkt unter dem Titel finden wir den Link Aktivieren, den wir anklicken. Wir sehen noch keine Vorschau des Themas, auch unser Name wird noch nicht als Autor angezeigt. Es liegt also noch etwas Arbeit vor uns.

Nun können wir im Kopfbereich des Backends auf den Titel unseres Blogs klicken, damit wir das Thema in voller Aktion sehen.

Den Loop erstellen

Den Abschluss bildet jetzt unser Platzhalter, wir werden also den Loop einfügen. Wir ersetzen die Zeile innerhalb des div-Tags mit der ID „theLoop“ durch das folgende Listing, welches wir jetzt schrittweise ergänzen werden.

Jetzt können wir den Loop in der Datei index.php erweitern. Zuerst stellen wir die Frage, ob es überhaupt Posts gibt. Dies ist ein typischer Anwendungsfall für die if-else-Anweisung. Denn es gibt nur zwei Möglichkeiten: Es wurden entweder Artikel gefunden oder nicht. Wir verändern also den Platzhalter für den Loop wie in diesem Listing gezeigt. Dabei geben wir, falls nichts gefunden wurde, einen kurzen erklärenden Text aus und zeigen ein Suchformular an.

...
<!-- anfang des inhalts -->
    < div id="content">
        <?php if (have_posts()): ?>
            <div id="theLoop">
                <p>Hier stehen die einzelnen Posts!</p>
            </div>
        <?php else: ?>
            <h2 class="page_header">
                Leider konnten wir f&uuml;r den Begriff 
                <em><?php echo $s; ?></em> nichts finden!
            </h2>
            <h3>Willst Du es nochmals probieren?</h3>
            <div class="entry">
                <?php get_search_form(); ?>
            </div>
        <?php endif; ?>
    </div>
<!-- ende des inhalts -->
...

Nun passen wir den Loop zur Ausgabe der Posts an. Denn was wäre das Blog ohne die Ausgabe der einzelnen Artikel? Schauen wir uns den Ausschnitt aus diesem Bereich an.

...
<div id="theLoop">
    <?php
    while (have_posts()):
        the_post();
    ?>
    <h3>
        <a href="<?php the_permalink() ?>" rel="bookmark">
            <?php the_title(); ?>
        </a>
    </h3>
    <?php endwhile; ?>
</div>
...

Auch hier sind außer der while-Schleife einige neue Befehle eingebaut. Die komplexesten Anweisungen sind have_posts() und the_post(). Die erste Anweisung ist sehr praktisch, denn sobald das Blog aufgerufen wird, ermittelt es alle passenden Posts und legt sie in einer speziellen Variable ab. Mit have_posts() kann man jetzt jeden einzelnen Artikel in dieser Variablen ansprechen. Solange ein Artikel gefunden wird, gibt die Funktion true, ansonsten false zurück. Damit eignet sie sich sehr gut als Abbruchbedingung.

Der zweite Befehl the_post() macht nichts anderes, als in der speziellen Variablen einen Schritt weiterzugehen und den nächsten Artikel zur Verfügung zu stellen. Er entspricht in etwa unserer Zählvariablen aus der eben erst kennen gelernten while-Schleife.

Der nächste Befehl ist the_permalink(). Er ermittelt eine dauerhafte URL für den Artikel. Je nach Einstellung im Blog kann das die URL des Blogs mit einem Titel sein oder auch die URL mit einem speziellen Query-String. Dies hat einerseits den Sinn, die wirklichen Parameter, die die Anwendung benötigt, zu verstecken. Andererseits kann sich der Leser einen klingenden Titel leichter merken als einen kryptischen Query-String. Zusätzlich wird unsere Webseite durch die Permalinks suchmaschinenfreundlicher, denn Suchmaschinen bewerten URLs ohne Query-String besser.

Nun können wir nach dem schließenden h3-Tag die Metainformationen zu jedem Beitrag einfügen. Das sind Informationen zum Autor, zum Datum oder auch zu den Kategorien und Schlüsselwörtern.

...
<div class="post">
    abgelegt unter: <?php the_category(', ') ?> &bull; 
    <?php the_tags('Tags:&nbsp;', ', ', ' &bull; '); ?>
    geschrieben von <?php the_author() ?> 
    am <?php the_time('j. F Y') ?> um <?php the_time() ?>
    <?php edit_post_link('bearbeiten'); ?>
</div>
...

Mit dieser Erweiterung sehen wir, wie praktisch der Loop ist. Wir müssen uns nur vorstellen, wie ein Artikel aussehen soll, die entsprechende Formatierung programmieren und der Loop erledigt die ganze Arbeit für alle Posts. Auch hier sind wieder einige neue Wordpress-Funktionen eingebaut worden. Darum soll es im kommenden Teil dieser Reihe gehen.

Dieser Textabschnitt ist dem Buch “PHP für WordPress – Themes und Templates selbst entwickeln” von Clemens Gull entnommen, das im Franzis-Verlag erschienen ist. Sie können es hier direkt bestellen.

Social Bookmarks: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • TwitThis
  • Facebook
  • Digg
  • del.icio.us
  • MisterWong
  • Google Bookmarks
  • Technorati
  • Y!GG

Post to Twitter

Artikel bewerten

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Weitere Artikel

Kommentar schreiben