2011-06-25 68 views
2

我正在嘗試對wpdb進行查詢以獲得過去一週中評論最多的帖子......任何想法我做錯了什麼?WordPress自定義查詢過去7天中評論最多的帖子

$querystr = "SELECT comment_count, ID, post_title 
     FROM $wpdb->posts wposts, $wpdb->comments wcomments 
     WHERE wposts.ID = wcomments.comment_post_ID 
     AND wcomments.comment_date >= CURDATE() - 7 
     GROUP BY wposts.ID 
     ORDER BY comment_count DESC 
     LIMIT 0 , 10 
"; 

$pageposts = $wpdb->get_results($querystr); 

該查詢似乎獲得所有時間的評論最多的帖子,而不是過去一週評論過的評論最多的帖子。

在此先感謝。

回答

1

Lonut,這需要的日期範圍問題的關心和評論次數最多的,但它不會選擇只有進行評論的最多評論的帖子在過去的X時間間隔內。

這應做到:

$querystr = "SELECT comment_count, ID, post_title 
     FROM $wpdb->posts wposts, $wpdb->comments wcomments 
     WHERE wposts.ID = wcomments.comment_post_ID 
     AND wposts.post_status='publish' 
     AND wcomments.comment_approved='1' 
     AND wcomments.comment_date > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 WEEK) 
     GROUP BY wposts.ID 
     ORDER BY comment_count DESC 
     LIMIT 0 , 10 
"; 

編輯:關於日期從YEAR改變過濾器,以周

+0

良好的閱讀理解傑克。感謝所有的幫助! – rpophessagr

+1

按順序在'comment_count'上,這是posts表的一列。該列中的值不會因where子句中的其他條件而有所不同。我不希望日期,狀態或認可的過濾器影響計數;他們只會過濾掉帖子。 – Andomar

+0

好點,但評論數量是由WordPress引擎根據批准的評論數量設置的。狀態和已批准的過濾器已到位,以便過濾掉已評論但尚未批准的帖子。 – jackreichert

2

這應該工作:

global $wpdb; 
$querystr = $wpdb->get_results("SELECT comment_count, ID,post_title 
    FROM $wpdb->posts 
    WHERE 
    post_status='publish' AND 
    post_date > DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 WEEK) 
    ORDER BY comment_count DESC 
    LIMIT 0 , 10"); 
+0

感謝您的幫助......幾乎......見傑克的答案。 – rpophessagr

1

你由posts表的comment_count現場訂貨。嘗試排序上的該組匹配的評論數:

ORDER BY count(*) desc