, den 29.05.2013 (Letztes Update: 22.01.2016)

WordPress: Anzahl Artikel auf Archivseiten ausgeben

WordPress
Wordpress - Logo

Mit WordPress-eigenen Mitteln lässt sich die Anzahl Artikel auf Archivseiten von Kategorien oder Schlagworten ausgeben. Wir zeigen wie das funktioniert.

Wenn man sich auf die Suche begibt und wissen möchte, wie man in WordPress die Anzahl von Artikeln auf einer Archiv-Seite ausgibt, werden einem oft Lösungen präsentiert, die nur für Kategorien valide Zahlen liefern. Im Fall von Schlagworten, bzw. Tags, wird dann eine falsche Summe ausgegeben.
Wir präsentieren Euch im folgenden eine Lösung, die sowohl Tags als auch Kategorien berücksichtigt. In welcher Reihenfolge man die Abfrage startet, ist prinzipiell egal. Wer Wert auf Mikro-Optimierung legt, sollte den Fall zuerst abfragen/bearbeiten, der am häufigsten auf der eigenen Website zutrifft.

WordPress-Template-System

Grundsätzlich kann man die Ausgabe trennen, da WordPress für Kategorien und Tags jeweils einzelne Vorlagen/Templates für Archiv-Seiten vorhält (tag.php oder category.php). Wer damit leben kann, dass die Kategorie-Archive den Schlagwort-Archiven gleichen, der kann auf die Template-Datei archive.php zurückgreifen.

Kommen wir zum Quellcode, der notwendig ist, um die Anzahl der Artikel innerhalb einer Kategorie bzw. eines Tag-Archivs zu bestimmen. Wir gehen davon aus, dass wir die archive.php bearbeiten, und fragen zunächst ab, ob es sich um ein Kategorie-Archiv handelt, dann überprüfen wir, ob es sich um ein Tag-Archiv handelt. Dies geschieht mit den Conditional Tags is_category(); und is_tag();. Wir weisen der Variablen $taxonomy einen Wert zu, den wir später weiterverwenden können. Im Fall eines Kategorie-Archivs ist dies category, handelt es sich um ein Tag-Archiv, weisen wir der Variablen $taxonomy den Wert post_tag zu.

Im nächsten Schritt muss man entweder den Kategorie/Tag-Namen oder deren ID in Erfahrung bringen. Da sich Namen ändern können, Nummern aber nicht, ist es ratsam, mit IDs zu arbeiten. Folglich fragt man im Fall der Kategorie über die Funktion get_cat_ID(); die ID ab, und bei Schlagworten mittels get_query_var();.

Über die Funktion get_term_by(); bringt man im Template die Kategorie bzw. das Tag in Erfahrung und speichert diese Information in einer Variablen $term; die WordPress-Entwickler haben selbst eine Zählfunktion implementiert, sodass man nicht auf den PHP-Standard zurückgreifen muss.
Wenn man die Kategorie, bzw. den Tag in Erfahrung gebracht hat, kann man in der Folge über $term->count; die Anzahl von Artikeln in einem Kategorie- respektive Schlagwort-Archiv ausgeben. Diesen könnte man wieder in einer Variablen speichern, doch das würde nur zusätzlich Arbeitsspeicher des Webservers kosten. Die Ausgabe erreicht man mittels echo-Befehls.

Beispielcode

Ein entsprechendes Beispiel könnte wie folgt ausschauen:

if(is_category()) {
  $taxonomy = "category"; 
  $term_id = get_cat_ID(get_query_var('category_name'));
elseif(is_tag()) {
  $taxonomy = "post_tag";
  $term_id = get_query_var('tag_id'); 
  $term = get_term_by('id', $term_id, $taxonomy);
}
echo $term->count;

Dies ist nur eine Lösung von vielen. WordPress und viele andere CMS bieten in der Regel mehrere Wege, die ans Ziel führen. An die Zahl von Artikeln innerhalb eines Archivs oder einer Kategorie könnte man z. B. gelangen, indem man zunächst die ID der betroffenen Kategorie oder Tags in Erfahrung bringt, und später mit der Schnittstelle wpdb-> eine Datenbankabfrage startet, und alle Ergebnisse der entsprechenden Tag- oder Kategorie-ID ausgibt. Der PHP-Befehl count(); könnte einem dann helfen, die Ergebnisse zu zählen. Wirklich effektiv scheint dieser Weg jedoch nicht zu sein, zumal MySQL selbst eine Zählfunktion anbietet.

Tablet-Markt wird mobilen PC Markt in diesem Jahr überholen
Neue Macs, ein aktualisiertes iOS und Mac Software für die WWDC Keynote erwartet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>



Zuletzt kommentiert