Нашёл простое решение, как исправить неработающий WordPress-плагин Recent Commenters and commented on. Вместо последних откомментированных постов он выдавал какую-то фигню, с первого взгляда похожую на недавно комментированные посты, но на самом деле ими не являющуюся.

Пришлось отлаживать. Довольно быстро я выяснил, что список по странному критерию выдаёт MySQL в ответ на этот SQL-запрос:

  SELECT DISTINCT posts.ID, comments.comment_post_ID, posts.post_title   	     FROM comments, posts  	    WHERE posts.ID = comments.comment_post_ID  	      AND comment_approved = '1'  	      AND post_status = 'publish' 	 ORDER BY comment_ID DESC  	    LIMIT 10

Проблема: в селекте сначала срабатывает DISTINCT, а только потом ORDER BY. В результате получаем не последние откомментированные посты, а посты, которые позже всех начали комментировать.

Решение: в ORDER BY пишем именно то, что имеем в виду, не предоставляя мускулю возможности неправильно догадываться о наших желаниях, а вместо DISTINCT применяем GROUP BY, потому что DISTINCT и MAX вместе не живут.

  SELECT MAX(comment_ID) AS commentID, posts.ID, comments.comment_post_ID, posts.post_title   	     FROM comments, posts  	    WHERE posts.ID = comments.comment_post_ID  	      AND comment_approved = '1'  	      AND post_status = 'publish'  	 GROUP BY posts.ID  	 ORDER BY commentID DESC  	    LIMIT 10

Горжусь собой.

Technorati Tags: