Kategorie-Seiten in WordPress lassen sich ja einfach mit unterschiedlichen Layouts anzeigen: ein Template mit dem Namen “category-16.php” wird beispielsweise für die Darstellung der Kategorie mit der ID 16 verwendet.
Wie ist dies aber bei Einzelansichten von Beiträgen?
“single-20.php” als Template für die Anzeige des Beitrages mit der ID 20 funktioniert nicht…
Hier läßt sich einfach mit einer “Weiche” abhelfen!
Für alle Einzelbeiträge einer Kategorie:
Ein kurzes Tutorial wie wir dies am Beispiel “Einzelansicht der Blog-Beiträge / Einzelansicht der WEBTOOLS- Support-Seiten” gelöst haben:
- Zweimaliges Kopieren der “single.php”
- Umbenennung der beiden Kopien in “single_standard.php” und “single_webtools.php”
- Inhaltliches anpassen der beiden Kopien: Design, Postmeta-Datas,…
- die Datei “single.php” – dies wird die eigentliche Weiche:
alles aus der “single.php” löschen und durch folgenden Code ersetzen:
<?php
$post = $wp_query->post;
if ( in_category('123') ) {
include(TEMPLATEPATH . '/single_webtools.php');
} else {
include(TEMPLATEPATH . '/single_standard.php');
}
?>
Wird nun ein Beitrag aufgerufen prüft diese “Weiche” ob er zu der Kategorie mit der ID 123 gehört. Wenn ja wird die “single_webtools.php” zur Darstellung verwendet, wenn nicht die “single_standard.php”.
Funktioniert prächtig wenn alle Einzelbeiträge einer Kategorie angesprochen werden sollen, in Aktion zu sehen auf dem Gesundheitsportal “Gesund mit Hausmittel”.
Für eine speziellen Einzelbeitrag:
Soll aber nur ein ganz spezieller Beitrag, unabhängig von der Kategorie ein eigenes Layout zugewiesen bekommen wird es etwas schwieriger. Beinahe alle Identitätsmerkmale eines Beitrages existieren erst innerhalb des Loop.
Hier kommt das kaum genutzte aber sehr mächtige Feature “Benutzerdefinierte Felder” zum Zug:
Für den speziellen Beitrag wird ein “Benutzerdefiniertes Feld” erstellt, verwendet wird dabei eigentlich nur der “Schlüssel”, der Wert muß nur existieren. Dieser Schlüssel wird in der “Weiche” abgefragt und wenn ein dazugehöriger Wert existiert wird das definierte Single-Template verwendet.
Die Abfrage in der Weiche sieht dann so aus:
<?php
$post = $wp_query->post;
if (get_post_meta($post->ID, 'layout1', true)) {
include(TEMPLATEPATH . '/single_webtools.php');
} else {
include(TEMPLATEPATH . '/single_standard.php');
}
?>
Als Schlüssel wurde hier “layout1″ angegeben. Hat dieser einen Wert wird wieder “single_webtools.php” verwendet.
Beide Überprüfungen (nach Kategorie oder Schlüssel/Wert) lassen sich natürlich duplizieren und so die Darstellung von Einzelbeiträgen beliebig anpassen.





Ursula 12.02.2008 - 20:50 Uhr
Das ist ja schon ein alter Hut…
Es ist nett wenn Du es nochmal ausführst, aber dies sollte wohl schon jeder interessierte Wordpress-Entwickler wissen!
Nicht persönlich nehmen
Ursula
R. Boegl / kick-image.at 12.02.2008 - 21:03 Uhr
Hallo Ursula
Du hast vollkommen recht, jeder Entwickler sollte das wissen.
Nur sind der Großteil der WordPress-User keine Fachkundigen, viele stoßen nach der ersten Problemlösung auf das nächste Problem u.s.w.. Die diversen WordPress- Foren sind voll solcher und ähnlicher Anfragen, und wir bemühen uns hier einen Teil der Antworten zu publiziert…
P.S.: Persönlich wird nichts genommen ;-)
Peter 14.02.2008 - 08:12 Uhr
Ich bin einer dieser “Unkundigen” ;-)
Und mir hats geholfen, danke!
Martin Rohrlack 02.12.2008 - 16:11 Uhr
so eine unqualifizierte aussage…
“das ist ja schon ein alter hut…”
omg… ich weiss was, ich weiss was…
die ursula ist ja ne ganz doll schlaue…
danke für den post @ kick-image.at, auch wenn die schlaue ursula das schon weiss ;)
Daniel 18.03.2009 - 18:04 Uhr
Mir hat es auch sehr geholfen! Also einfach die dummen Kommentare überlesen, vielen DANK!
antoine 02.05.2009 - 18:22 Uhr
Danke, es ist immer wieder hilfreich die Lösung auf dem Servierbrett serviert zu bekommen! Gute Arbeit, gutes Tutorial
Stefan 16.06.2010 - 11:06 Uhr
Hallo zusammen, einfach fein Eure Blog.
Habe ich auch die Möglichkeit mehrer Kategorien bei (in_category(’123′)) anzugeben?
post;
if ( in_category(’123′) ) {
include(TEMPLATEPATH . ‘/single_webtools.php’);
} else {
include(TEMPLATEPATH . ‘/single_standard.php’);
}
?>
R. Boegl / kick-image.at 16.06.2010 - 12:57 Uhr
Hallo Stefan
Natürlich kann man mehrere Kategorien angeben, wie ist hier zu finden: http://codex.wordpress.org/Fun.....n_category
Viel Erfolg ;-)
Rene 28.07.2010 - 20:37 Uhr
Genau das habe ich gesucht – DANKE!