Frank hat mich heute gefragt, wie man in WordPress für einen Autor die Gesamtanzahl der zu seinen Artikeln abgegebenen Kommentare ausgeben kann. Das macht vor allem für die Betreiber von Mehrautoren-Blogs einen Sinn. Dafür gibt es leider keine fertige Funktion in WordPress. Also war selber klöppeln angesagt.
Für das Ergebnis muß man zwei Tabellen in der WordPress Datenbank verknüpft abfragen: wp_posts und wp_comments. Aus ersterer bekommt man die Artikel, die unter einer bestimmte Autoren ID geschrieben wurden, aus zweiterer die zu diesen Artikeln zugehörigen Kommentare.
Das ganze läßt sich in eine Funktion verpacken, wobei nur die Kommentare zu veröffentlichten Artikeln und genehmigte Kommentare gezählt werden:
function ws_comments_articles_author_count($user_id) {
global $wpdb;
$result = $wpdb->get_var("SELECT COUNT(*) AS total FROM wp_comments LEFT JOIN wp_posts ON wp_comments.comment_post_ID = wp_posts.ID WHERE wp_posts.post_author = $user_id AND wp_posts.post_status = 'publish' AND wp_comments.comment_approved = 1");
if ( $result == 0 ) {
echo "keine Kommentare";
} elseif ( $result == 1) {
echo "ein Kommentar";
} elseif ( $result > 1) {
echo $result . " Kommentare";
}
}
Die Funktion wird in die functions.php des Theme Verzeichnisses eingefügt und kann dann mit der Übergabe der Autoren ID folgendermaßen aufgerufen werden:
<?php ws_comments_articles_author_count(get_the_author_meta('ID')); ?>Um eine Namenskollision mit einer zukünftigen WordPress Funktion zu vermeiden, hat der Funktionsname das Präfix ws_ (für Wellenspeicher) erhalten. Das kann man natürlich an eigene Bedürfnisse anpassen.
Viel Spaß beim Einbauen!

HappyBuddha
mactomster
tekshrek
TimDuran
apfelklatsch
ScreenCastsOnline
Digging into WP
WP Engineer
Besten Dank.
Und da taucht direkt die nächste Frage auf. Die Teilen Funktion hier bei Google+ ein spezieller Code oder wurde das nur früher frei geschalten als bspw. bei mir?
Ist kein spezieller Code. Also nur früher Vogel