FAQ - Oft gestellte Fragen

Allgemeines | Installation | Konfiguration | Plugins | Themes und Design | RSS | Programmierung | WordPress Deutschland Dienste



Artikel der Kategorie X auf Seite Y anzeigen

Zuerst sei gesagt, dass es eigentlich der WordPress-Philosophie widerspricht, Artikel auf einer statischen Seite auszugeben. Artikel werden normalerweise in Archiven aufgelistet, z.B. Kategorie- oder Tag-Archiven.

Aus verschiedenen Gründen möchte man aber dennoch Artikel aus einer oder mehreren Kategorien auf einer statischen Seite auflisten. Dazu erstellst Du dir zunächst ein Template für die statische Seite. Wie das geht ist hier in der Doku erklärt. Als Vorlage für Dein neues Seitentemplate kannst du im Normalfall die index.php deines Themes her nehmen.

In deinem neuen Seitentemplate suchst du jetzt die Zeile, in der der Loop gestartet wird. Diese sieht meist etwa so aus:

<?php while ( have_posts() ) : the_post(); ?>

Vor dieser Zeile fügst Du nun folgenden Befehl ein:

<?php query_posts('category_name=Allgemein'); ?>

Durch diese Zeile wird die Artikelschleife beeinflusst, und gibt jetzt die Artikel der Kategorie “Allgemein” aus. Das war’s schon! Jetzt musst du nur noch eine neue statische Seite anlegen, ihr einen Titel geben und dein Seitentemplate zuweisen. Fertig.

Wenn du mehr über das Voodoo-Werkzeug query_posts() wissen möchtest, dann schau doch einfach mal in die Doku (dt.) und den Codex (engl.).

Geht das nicht etwas dynamischer?

Natürlich ist das ganze noch ziemlich statisch. Es gibt nun verschiedene Möglichkeiten:

  • für jede Kategorie ein eigenes Seitentemplate anlegen
  • den Namen oder die ID an die Seite übergeben, zum Beispiel über ein benutzerdefiniertes Feld
  • gleichnamige Kategorien und statische Seiten anlegen

Alle diese Methoden haben ihre Vor- und Nachteile. Beispielhaft sei im folgenden die Methode 2 näher erklärt. Als erstes wird dazu eine statische Seite angelegt, die die Kategorie auflisten soll. Diese Seite erhält zusätzlich ein benutzerdefiniertes Feld mit dem Schlüssel “category_name” und dem Namen der auszugebenen Kategorie als Wert, z.B. “Allgemein”.

Das Template erhält nun zusätzlich einen Abruf dieses benutzerdefinierten Feldes und dessen Übergabe an query_posts():

<?php $listCategory = get_post_meta($post->ID, 'category_name', true); ?>

In der Variablen $listCategory befindet sich jetzt der Name Deiner Kategorie, im Beispiel also “Allgemein”. Diesen kannst Du jetzt an query_posts() übergeben:

<?php query_posts( 'category_name=' . $listCategory ); ?>

Jetzt kannst Du weitere Seiten anlegen, die andere Kategorienamen per benutzerdefiniertem Feld übergeben.

Die Variante “gleiche Namen für Seite und Kategorie” funktioniert ähnlich. Hier liest du den Namen der statischen Seite aus, z.B. mittels get_the_title(), und übergibst diesen dann in gleicher Weise an query_posts(). Das Ganze funktioniert in ähnlicher Weise natürlich auch mit Tags.

Eine weitere Variante gibts bei Monika.

Wenn Du weitere Fragen dazu hast, dann stell diese bitte im Forum. Benutze bitte vor dem Posten die Forensuche, da es schon einige Threads zu dieser Frage gibt.


Letzte Aktualisierung am 27. Oktober 2008 um 22:06 von . Zurück zur Übersicht.

In der FAQ werden oft gestellte Fragen beantwortet. Ausführliche Anleitungen findest du in der Dokumentation. Solltest du keine Antworten gefunden haben, kannst du dich mit deinem Problem an das Forum wenden.