WordPress 無插件示顯最多評論的文章
來源:程序員人生 發布時間:2014-03-19 18:49:57 閱讀次數:3736次
新的網站里,我需要在某個地方顯示最多評論的文章。作為一個定制模板,強行要求用戶在使用這個模板前先安裝某個插件顯然是很不好的,因此我們必須在模板里集成所有用戶所需要的功能。廢話不多說了,上代碼。
function most_popular_posts($no_posts = 10, $before = '<li>', $after = '</li>', $show_pass_post = false, $duration='') {
//定制參數,可以自己修改相關參數,以便寫樣式
global $wpdb;
$request = "SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS 'comment_count' FROM $wpdb->posts, $wpdb->comments";
//在數據庫里選擇所需的數據
$request .= " WHERE comment_approved = '1' AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status = 'publish'";
//篩選數據,只統計公開的文章
if(!$show_pass_post) $request .= " AND post_password =''";
if($duration !="") { $request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
}
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
//按評論數排序
$posts = $wpdb->get_results($request);
$output = '';
if ($posts) {
foreach ($posts as $post) {
$post_title = stripslashes($post->post_title);
$comment_count = $post->comment_count;
$permalink = get_permalink($post->ID);
$output .= $before . '<a href="' . $permalink . '" title="' . $post_title.'">' . $post_title . '</a> (' . $comment_count.')' . $after;
}
//輸出文章列表項
} else {
$output .= $before . "None found" . $after;
//沒有文章時則輸出
}
echo $output;
}
以上代碼寫在主題的functions.php里,在需要調用最多評論文章的地方添加以下代碼:
< ?php most_popular_posts(); ?>
后記:
現在發現很多WordPress玩了有一段日子的老鳥熱衷于尋找各種無插件實現XX功能的方法,這些所謂無插件的方法其實很多都是從相關的插件里把函數提取出來的,并且用這個方法為網站添加相關功能會一定程度上造成以后維護比較困難,并且也增加了BUG的風險。
對于一些很簡單的功能,例如本文所述的顯示最多評論文章,可以把這些簡單的功能集成到主題里。但一些復雜的功能,例如AJAX,個人建議還是用插件吧,因為插件的兼容性比專用代碼強,而且一般插件作者會負責相關的維護,免除了很多麻煩。
當然在使用一個新插件之前強烈建議現在本地測試一下,看看該插件的功能能否達到自己的要求,有沒有明顯的BUG等等。有技術的朋友可以修改一下插件的數據存儲方法,據本人的經驗有些插件寫進數據庫里的內容是多而亂的,這樣的插件要慎用。
轉自:http://blog.imbolo.com
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈