
Die wirkliche Anzahl der Kommentare je Post läßt sich allerdings sehr leicht aus der Tabelle wp_comments durch einfaches Zählen ermitteln und das Ergebnis in die Tabelle wp_posts übertragen. Wenn das ganze jetzt noch als sogenannte stored procedure angelegt wird, steht die Routine jederzeit zur Verfügung. In PhpMyAdmin könnte man im SQL-Editor dazu folgendes eingeben:
DROP PROCEDURE if exists proc_posts_commentcount_update //
CREATE DEFINER = WP_DB_User@localhost
PROCEDURE proc_posts_commentcount_update()
COMMENT 'fuehrt einen Soll-Ist-Abgleich der Kommentare durch'
BEGIN
update WP_Database.wp_posts as po
left join (select comment_post_ID, count(*) as 'cnt'
from WP_Database.wp_comments
where comment_approved = '1'
group by comment_post_ID) as co
on co.comment_post_ID = po.ID
set po.comment_count = coalesce(co.cnt, 0)
where po.post_status = 'publish' and po.post_type = 'post';
END //
Hinweis: Kommentare (Comment) dürfen bei einigen MySQL-Versionen scheinbar eine Länge von 64 Zeichen nicht übersteigen.
Zu jedem echten Post in der Tabelle wp_posts (Status = publish und Typ = post) werden die Vorkommen der freigegebenen Kommentare (Approved = 1) in der Tabelle wp_comments gezählt und die Anzahl in das Datenfeld wp_posts.comment_count eingetragen. Liegen keine Kommentare zu einem Post vor, so soll dies der Wert »0« und nicht »NULL« sein (Coalesce). Damit hat ein vollständiger Soll/Ist-Abgleich der Kommentare stattgefunden. Gespeicherte Prozeduren können jederzeit über das Call-Statement aufgerufen und ausgeführt werden.
rh2012-08-002