WordPress & Webwork

WordPress-Artikel einer bestimmten Kategorie sollen ein eigenes Template erhalten

Wie kann man Templates für die Einzelansicht von Artikeln bzw. Beiträgen beeinflussen?

Für das Aussehen bzw. die Gestaltung der Einzelansicht von Artikel bzw. Beiträgen bei WordPress ist die single.php zuständig. Hier wird festgelegt welche Inhalte bzw. Elemente vorhanden sind. Möchte man die Artikel einer bestimmten Kategorie anders darstellen als andere, so kann man das ganze wie folgt lösen:

Zunächst einmal muss man sich eine Kopie der Original-single.php erstellen. Danach ersetzt man den Inhalt der single.php mit einer Abfrage. Dabei wird für die angegebenen Kategorien bestimmte welche Datei zuständig ist.

<?php $post = $wp_query->post;
if ( in_category('57') ) {
  include(TEMPLATEPATH . '/single_kategorie1.php');
} else if(in_category('56')) {
  include(TEMPLATEPATH . '/single_kategorie2.php');
} else if (in_category ('33')){
  include(TEMPLATEPATH . '/single_kategorie3.php');
}

else {
  include(TEMPLATEPATH . '/single_standard.php');
}
?>

Dabei greift man zum einen auf die ID der Kategorie zu, die ein bestimmtes Template bekommen soll. Man kann aber auch den Slug der Kategorie einfügen. Anschließend wird dann auf die entsprechende Template-Datei zugegriffen.

Handelt es sich um eine nicht aufgeführte Kategorie (else), dann soll auf die Standard-single.php zurückgegriffen werden. Dabei ist die single_standard.php die am Anfang erstellte Kopie der ursprünglichen single.php.

Das ganze ist im übrigen nicht zu Verwechseln mit der Methode bestimmten Artikel-/Beitragstypen (Stichwort: Formatvorlagen) eine eigene single.php zuzuweisen.

via CreativeDev

3 Reaktion(en)

  1. Christian Schorn

    Wäre es da nicht flexibler, get_template_part zu verwenden?

    (Die Dateien sollten in diesem Fall mit Bindestrichen benannt werden, also "single-kategorie1.php")


    $slug = null;
    if (in_category('57')) {
    $slug = 'kategorie1';
    } elseif (in_category('56')) {
    $slug = 'kategorie2';
    } elseif (in_category('33')) {
    $slug = 'kategorie3';
    }
    get_template_part('single', $slug);

    Das hat den angenehmen Nebeneffekt, dass auf die "single.php" zurückgegriffen wird, falls die ausgewählte Datei nicht (mehr) vorhanden sein sollte und funktioniert reibungslos mit Parent- und Child-Themes.

  2. Pingback: WordPress-Newsletter Nr. 146 | perun.net

  3. Pingback: WordPress: zusätzliche single.php für neue Beiträge » perun.net

Die Kommentare in diesem Beitrag sind geschlossen.