WordPress & Webwork

WordPress: Anzahl der Artikel & Kommentare anzeigen

Aktualisierung der Anleitung, wie man die Anzahl der veröffentlichten Artikel, Kommentare und Kategorien im Frontend ausgibt und die Zahlen richtig formatiert.

Wie ich im Footer dieser Website die Anzahl der veröffentlichten Artikel, Kommentare und Kategorien ausgebe habe ich schon mal im Dezember letzten Jahres geschrieben.

Ich musste aber den Code von damals leicht anpassen und hier ist das neue Ergebnis:

<li>Artikel: <?php $nr_art = wp_count_posts('post'); $nr_art = $nr_art->publish; echo number_format($nr_art, 0, '', '.'); ?></li>
<li>Kategorien: <?php $nr_kat = wp_count_terms('category'); echo number_format($nr_kat); ?></li>
<li>Kommentare: <?php $nr_komm  = get_comment_count(); $nr_komm  = $nr_komm['approved']; echo number_format($nr_komm, 0, '', '.'); ?></li>

Der ursprüngliche Code hat nicht mehr funktioniert seit dem Serverwechsel. Ich vermute mal das lag daran, dass ich vorher PHP 5.2.x und jetzt PHP 5.3.12 und somit verursachten die Parameter-Angaben des alten Codes Fehlermeldungen.

Hier noch einmal die entsprechende Stelle im alten Code:

echo number_format($nr_art, '', '', '.')

Mit number_format formatiert man eine Zahl: Anzahl der Dezimalzeichen, Dezimaltrennzeichen und der Tausender-Trennzeichen. Gibt man (k)einen Parameter an echo number_format($nr_art), dann greift PHP hier auf die Standardangaben zurück und das heißt: Komma als Tausender-Trennzeichen und Punkt als Dezimaltrennzeichen … genau umgekehrt wie im deutschen und einigen anderen Ländern von Kontinentaleuropa.

Daher muss der entsprechende Abschnitt in meinem Fall so ausschauen:

echo number_format($nr_art, 0, '', '.')

Das heißt übersetzt: gebe die Zahl aus, ohne Nachkommastellen – was auch logisch ist, da es keine Viertelkommentare und Drittelartikel gibt – ohne Dezimaltrennzeichen, aber mit Punkt als Tausender-Trennzeichen.

Und wo lag jetzt genau der Fehler gegenüber der alten Version?


// alt
echo number_format($nr_art, '', '', '.')

// neu
echo number_format($nr_art, 0, '', '.')

Ich hoffe die Hervorhebung ist deutlich genug. Das PHP auf dem neuen Server störte sich am zweiten Parameter. Anstatt einem leeren Wert ('') wird eine Zahl erwartet.

3 Reaktion(en)

  1. codestyling

    Da wäre ich doch für eine lokalisierbare Ausgabe der Zahlenwerte mittels:

    function number_format_i18n( $number, $decimals = 0 )

    WordPress bringt das schon eine Weile mit sich (Version >= 2.3) und kümmert sich per Sprachdatei korrekt darum, ob die aktuelle Sprache nun Kommata, Punkte oder sonst was braucht als Dezimaltrenner.

Die Kommentare in diesem Beitrag sind geschlossen.