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