von | Blog, PHP, WordPress

Für die Anzeige aller Artikel einer Kategorie versucht WordPress das Template category.php (im aktuellen Theme-Verzeichnis) aufzurufen. Ist diese nicht vorhanden, weicht WP auf die index.php aus.

Der Aufbau der category.php entspricht prinzipiell der index.php, also im Wesentlichen findet sich dort der Aufruf des headers, der Loop, des Footers und ggf. der Sidebar. Die von Betreiber gewünschten Besonderheiten bei der Anzeige einer Kategorie werden in die Datei category.php eingearbeitet.

So weit – so gut! Aber was ist, wenn bestimmte Kategorien in anderer Form gelistet werden sollen?

Ist das denkbar und wahrscheinlich?
Ja unbedingt! Ein simples Szenario hierfür wäre, dass alle Beiträge mit Artikelbild angezeigt werden sollen, nur die Artikel der Kategorie “Glossar” nicht. Das Layout der Standardanzeige würde aber durch fehlende Artikelbilder zerstört werden.

Die Lösung:

Zunächst muss die ID der gesondert zu behandelnden Kategorie herausgefunden werden. Hierzu

  1. das WP-Backend öffnen,
  2. Beiträge -> Kategorien auswählen. Es erschein die Liste aller vorhandenen Kategorien.
  3. Die gewünschte Kategorie auswählen oder mit der Maus auf den Link zur Kategorie gehen.
  4. Die Kategorie-ID ist im Link ersichtlich. Die URL zur Kategorie lautet in etwa so:
    http://meinblog.de/wp-admin/edit-tags.php?action=edit&taxonomy=category&tag_ID=9&post_type=post
  5. Die gesuchte ID ist in diesem Fall 9

Nachdem die ID bekannt ist, sollte die Datei category.php oder -falls nicht vorhanden- die index.php kopiert werden. Der neue Name der Datei würde im oben genannten Fall category-9.php heißen müssen. Es wird also immer die Kategorie-ID, getrennt durch einen Bindestrich angehängt.

In diese Datei wird dann der HTML-Code für die Listingausgabe der gesondert zu behandelnden Kategorie geschrieben. Natürlich können beliebig viele gesonderte Fälle behandelt werden – es muss einfach ein weitere Datei mit der gewünschten Kategorie-ID erstellt werden.

Ach so: Sollte es mehrere Kategorien geben, die auf dieselbe Weise dargestellt werden sollen. Im oben genannten Beispiel würde wahrscheinlich die Kategorie “FAQ” (z.B. mit KatID=11) auch ohne Artikelbilder auskommen. Hier sollte darauf verzichten werden, zwei Dateien category-9.php und category-11.php mit dem identischen HTML-Code zur Ausgabe zu erstellen. Besser ist es, nur eine Datei “inc_cat-ohnebild.php” mit dem notwendigen HTML-Code (ohne Header) zu erstellen. Diese Datei wird dann durch category-9.php und category-11.php aufgerufen. Die Kategorie könnte zur Unterscheidung als globale Variable übergeben werden, so dass dann in der Anzeigedatei “inc_cat-ohnebild.php” darauf reagiert werden kann:

<?php
   // ---------- Category 9 (Datei category-9.php)
   get_header();
   $work_cat = 9;
   get_template_part( 'inc_cat', 'ohnebild' ); 
?>

In Zeile 5 wird die Datei “inc_cat-ohnebild.php” aufgerufen. Der Vorteil ist, dass bei Änderungen in der Listingausgabe nur diese Datei geändert werden muss. Es gibt also keinen redundanten Code.

Danke für’s Lesen!

Kommentare sind geschlossen.