Das eigene WordPress-Theme erstellen – #4: Die index.php und die Post-Loop

In dieser Serie geht es darum, ein WordPress-Theme zu erstellen – von Grund auf. Im vierten Teil geht es um die index.php und die Loop – einen elementaren Bestandteil eines WordPress-Themes.

Kein WordPress-Theme ohne index.php

Die index.php ist wie die style.css aus unserem zweiten Teil eine Pflicht-Datei für ein WordPress-Theme – ohne geht es nicht. In der Template-Hierarchie eines WordPress-Themes ist die index.php die allerletzte Fallback-Datei. Wenn also beispielsweise eine Seite angezeigt wird, euer Theme aber keine page.php und keine Datei für eine bestimmte Seite enthält, so wird auf die index.php zurückgegriffen.

In erster Linie ist die index.php aber für die Darstellung der Blog-Übersicht gedacht. Als Alternative für den Fall, dass das Blog als Startseite fungiert, gibt es noch die home.php. Ihr könntet also die Darstellung verändern, wenn das Blog als Startseite genutzt wird. So sieht unsere index.php aus:

<?php get_header(); ?>
    <main role="main">
        <?php if ( have_posts() ) {
        /* Start the Loop */
        while ( have_posts() ) {
            the_post();
            get_template_part( 'content', get_post_format() );
        }
    }
    the_posts_pagination( array( 'type' => 'list' ) ); ?>
    </main>
<?php get_sidebar();
get_footer();

Ziemlich übersichtlich, oder? Mit der get_header()-Funktion wird die header.php, die wir im letzten Teil der Reihe behandelt haben, eingebunden. Innerhalb des main-Elements findet ihr einen elementaren Teil von WordPress: Die Loop. Das ist das Standard-Prozedere, wie in WordPress eine Reihe von Beiträgen ausgegeben wird. Mit if ( have_posts() ) prüfen wir, ob Beiträge gefunden wurden.

Wenn das so ist, starten wir die Schleife und lassen sie so lange laufen, bis have_posts() nicht mehr wahr ist, es also nicht noch mehr Beiträge gibt. the_post() holt die Daten zu dem aktuellen Beitrag aus der Datenbank. Innerhalb dieser while-Schleife stehen uns jetzt nach dem the_post()-Aufruf Funktionen zur Verfügung, um Informationen zu dem Beitrag anzuzeigen, der gerade durchlaufen wird – zum Beispiel the_title() für die Ausgabe des Titels.

Theoretisch könnten wir uns jetzt bereits in der index.php um die Ausgabe des Beitrags für die Blog-Seite kümmern. Da wir aber eine unterschiedliche Darstellung für Beiträge vom Typ „Bild“ und „Galerie“ erreichen wollen, gehen wir einen anderen Weg:

get_template_part( 'content', get_post_format() );

Mit dieser Zeile sorgen wir dafür, dass eine Datei mit dem Präfix content- gefolgt von der Bezeichnung des Post-Formats eingebunden wird. Im Fall einer Galerie wäre das die content-gallery.php. Für Standard-Beiträge und solche, für die keine besondere content--Datei angelegt wurde, wird die Datei content.php eingebunden. In diesen Dateien, die wir in späteren Teilen besprechen werden, findet dann die Ausgabe der Beiträge für die Blog-Seite statt.

Mit dem Aufruf der the_posts_pagination()-Funktion geben wir bei Bedarf eine Pagination aus, damit auch ältere Beiträge angesehen werden können. Mit der get_sidebar()-Funktion binden wir die sidebar.php und mit get_footer() die footer.php ein.

Der Code auf GitHub

Im GitHub-Repository zu dieser Reihe gibt es den Tag „v0.3“. Dort findet ihr den Stand des Themes nach diesem Artikel.

Die weiteren Teile meiner WordPress-Reihe:

Dieser Beitrag ist eine Übernahme meines Beitrags für t3n.de.

Das könnte auch interessant sein

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.