Adesea când apar disfuncționalități la pluginurile de comentarii, gen Disqus sau cele pentru integrarea comentariilor Facebook, numărul de comentarii afișat în articole este diferit de cel real.
Acest lucru se întâmplă pentru că WordPress nu calculează acest număr de fiecare dată când se afișează un articol ci reține acest număr într-un câmp aferent articolului.
SOLUȚIA 1. Există un plugin testat care rezolvă ușor această problemă: Web Ninja Comment Count Fixer
SOLUȚIA 2. Dacă nu sunteți adeptul pluginurilor mai există și posibilitatea de a interveni direct asupra bazei de date.
Pentru aceasta trebuie să aveți acces la baza de date MySQL.
Presupunând că folosiți structura default cu prefixul tabelelor wp_ puteți rula următorul cod MySQL:
SELECT wpp.id, wpp.post_title, wpp.comment_count, wpc.cnt
FROM wp_posts wpp
LEFT JOIN
(SELECT comment_post_id AS c_post_id, count(*) AS cnt
FROM wp_comments
WHERE comment_approved = 1 GROUP BY comment_post_id) wpc
ON wpp.id=wpc.c_post_id
WHERE wpp.post_type IN ('post', 'page')
AND (wpp.comment_count!=wpc.cnt
OR (wpp.comment_count != 0 AND wpc.cnt IS NULL));
Rezultatul afișat reprezintă o listă a articolelor ale căror număr calculat de comentarii este diferit de cel real.
Pentru a înlocui numărul calculat de comentarii cu cel real rulați următorul cod:
UPDATE wordpress.wp_posts wpp
LEFT JOIN
(SELECT comment_post_id AS c_post_id, count(*) AS cnt
FROM wordpress.wp_comments
WHERE comment_approved = 1 GROUP BY comment_post_id) wpc
ON wpp.id=wpc.c_post_id
SET wpp.comment_count=wpc.cnt
WHERE wpp.post_type IN ('post', 'page')
AND (wpp.comment_count!=wpc.cnt
OR (wpp.comment_count != 0 AND wpc.cnt IS NULL));
IMPORTANT: Nu uitați să faceți un backup al bazei de date înainte de a rula codurile de mai sus!
Această a doua soluție este bazată pe codul prezentat de Artem Russakovskii aici.