WordPress输出评论最多的10篇文章

转自点点 9 年前 回复

, ,

要实现这个功能就要查询博客数据库,我们将使用$wpdb->get_results()方法,我们只需向它传递一个SQL查询语句作为参数即可:

get_results("SELECT id, post_title, comment_count
FROM {$wpdb->prefix}posts
WHERE post_type='post' AND post_status='publish' AND post_password=''
ORDER BY comment_count DESC LIMIT 10"); ?>

这里解释一下该查询语句的作用。这条语句从WordPres博客数据库文章表中查询文章的id,标题和评论数,限定只返回10篇公开的且未加密的文章(你 可以修改语句的10,控制文章数量),文章按评论数从多到少排序。因为WordPress允许我们自定义数据库表的前缀,所以可能不同的博客的数据库表前 缀会不太一样,所以这里为了提高兼容性,用{wpdb->prefix}posts表示posts表,在大多数博客的数据库中,该表都是"wp_posts"。

SQL语句已经写好,我们就可以一个foreach选好输出查询结果了:

get_results("SELECT id, post_title, comment_count
FROM {$wpdb->prefix}posts
WHERE post_type='post' AND post_status='publish' AND post_password=''
ORDER BY comment_count DESC LIMIT 10"); ?>

  • post_title; ?>

输出结果:

  • 文章标题1
  • …..

  • 文章标题10

现在你自己修改一下你的sidebar.php,看看有什么结果?这里只输出了评论最多的10文章的标题,你可以根据需要使用以下的变量输出你想要的结果:

  • $post->id : 文章的id
  • $post->post_title : 文章标题
  • $post->comment_count : 文章评论数

如果你想要获取文章的URL地址,你可以在以上SQL语句添加"guid"列的查询,或者更简单的,使用get_permalink($post->id)方法,只需向它传递$post->id参数即可。
最后提供几个完善的代码,以及输出样例,你可以在sidebar.php中直接使用。
示例一:

get_results("SELECT id, post_title, comment_count
FROM {$wpdb->prefix}posts
WHERE post_type='post' AND post_status='publish' AND post_password=''
ORDER BY comment_count DESC LIMIT 10"); ?>

输出结果:

示例二:

get_results("SELECT id, post_title, comment_count
FROM {$wpdb->prefix}posts
WHERE post_type='post' AND post_status='publish' AND post_password=''
ORDER BY comment_count DESC LIMIT 10"); ?>

输出结果:

 
结语:
以上代码均在我的博客上测试过,WordPress版本 2.9.2
一旦你掌握了如何直接与WordPress数据库打交道,你可以做的事情那可就多了,以上内容也只是冰山一角!
本文只是演示如何从WordPres数据库表中查询你想要的数据。但是事实上,如果你用的是WordPress 2.9及以上版本,你完全可以使用query_posts()函数,只需传递参数orderby=comment_count即可。不管用用哪种方法,都归结为一点:向数据库发起一次SQL查询。
 
参考文章:
Quick Tip: "Popular Posts By Comment Count" SQL Query in WordPress
转自露兜博客

支付宝打赏微信打赏

如果此文对你有帮助,欢迎打赏作者。

发表评论

欢迎回来 (打开)

(必填)

8963