Home > wordpress > 调用WP热评文章的SQL语句

调用WP热评文章的SQL语句

2009年9月14日 字体大小 发表评论 阅读评论

WP调用热门评论文章的插件很多,这篇文章是为那些不希望额外使用插件就达成目的的朋友准备的。相关函数语句也都非常简单,整个安装调用过程分为2步,首先在你想要显示热评文章的地方添加以下代码:

1
2
3
4
本月热评   
<ul>   
<?php if (function_exists('simple_get_most_viewed')) { simple_get_most_viewed(7, 30); } ?>   
</ul>

其中函数 simple_get_most_viewed(7, 30); 有两个参数,第一个是要显示的文章数,第二个是时间段。

接下来是相关的SQL语句函数代码(你可以将其加入你的主题 function.php 文件中):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 获得热评文章   
function simple_get_most_viewed($posts_num=10, $days=30){   
    global $wpdb;   
 
    $sql = "SELECT `ID` , `post_title` , `comment_count` FROM $wpdb->posts  
            WHERE `post_type` = 'post' AND TO_DAYS( now( ) ) - TO_DAYS( `post_date` ) < $days  
            ORDER BY `comment_count` DESC LIMIT 0 , $posts_num ";   
 
    $posts = $wpdb->get_results($sql);   
    $output = "";   
    foreach ($posts as $post){   
        $output .= "\n<li><a href= \"".get_permalink($post->ID)."\" rel=\"bookmark\" title=\"".$post->post_title."\" >".$post->post_title."</a> - ".$post->comment_count."个评论</li>";   
    }   
    echo $output;   
}   
// 函数 get_permalink($post->ID) 可以得到文章的URL

其中的核心代码就是这句SQL语句:

1
2
3
SELECT `ID` , `post_title` , `comment_count` FROM $wpdb->posts   
            WHERE `post_type` = 'post' AND TO_DAYS( now( ) ) - TO_DAYS( `post_date` ) < $days   
            ORDER BY `comment_count` DESC LIMIT 0 , $posts_num

同样我们可以衍生出更多通过留言数显示相关文章的SQL语句。

1.查找所有的日志,得到留言最多的10篇, 降序排列:

1
2
3
SELECT `ID` , `post_title` , `comment_count`   
            FROM `wp_posts` WHERE `post_type` = 'post'  
            ORDER BY `comment_count` DESC LIMIT 0 , 10

其中如果不加判断 post_type ,则会得到文章&页面的输出结果。

2.查找最近一个月的日志,得到留言最多的10篇:

1
2
3
SELECT `ID` , `post_title` , `comment_count`  FROM `wp_posts`   
            WHERE `post_type` = 'post'  AND TO_DAYS( now( ) ) - TO_DAYS( `post_date` ) < 31   
            ORDER BY `comment_count` DESC LIMIT 0 , 10

3.查找所有作者ID为2,且已经发表的日志,得到留言最多的10篇:

1
2
3
4
5
SELECT `ID` , `post_title` , `comment_count`  FROM `wp_posts`   
            WHERE `post_type` = 'post'  
            AND `post_status` = 'publish'  
            AND `post_author` = 2   
            ORDER BY `comment_count` DESC LIMIT 0 , 10

4.查找所有分类ID为 3 的日志,得到留言最多的10篇:

1
2
3
4
5
6
7
8
9
SELECT `ID` , `post_title` , `comment_count`  FROM `wp_posts`   
    INNER JOIN `wp_term_relationships` ON (`wp_posts`.`ID` = `wp_term_relationships`.`object_id`)   
    INNER JOIN `wp_term_taxonomy` ON (`wp_term_relationships`.`term_taxonomy_id` =  `wp_term_taxonomy`.`term_taxonomy_id`)   
    WHERE   1=1   
        AND `wp_term_taxonomy`.`taxonomy` = 'category'  
        AND `wp_term_taxonomy`.`term_id` = 3   
        AND `wp_posts`.`post_type` = 'post'  
    GROUP BY `wp_posts`.`ID`   
    ORDER BY `comment_count` DESC LIMIT 0 , 10

效果演示:

本月热评演示

本月热评演示


PS.Tab效果中要添加 Top posts viewed 的显示,但是通过调用 post view 插件的数据导致留言处不能与文章正常匹配,目前不知道如何解决……

分类: wordpress 标签: , , 浏览834 次
声明: 本站内容遵循 署名-非商业性使用-禁止演绎 2.5 共享协议. 原创文章转载 请注明转自 守望的麦子

相关文章 随机文章 本月热评 热门标签

    1. 2009年9月15日13:58 | #1

      如果你可以把全部源码分享下就更好了

      [回复]

      CHINA CHINA Internet Explorer Internet Explorer 6.0 Windows Windows XP
    2. 2009年9月15日14:09 | #2

      @低调VS飞翔
      :?: 这已经是全部了啊……

      [回复]

      CHINA CHINA Internet Explorer Internet Explorer 7.0 Windows Windows XP
    3. 2009年9月16日00:00 | #3

      要改的地方好多啊 :sad:

      [回复]

      CHINA CHINA Opera Opera 9.64 Windows Windows XP
    4. 2009年9月16日01:05 | #4

      @歪歪屋啊
      你看了吗?什么都不用改!添加两段代码就OK了……

      [回复]

      CHINA CHINA Internet Explorer Internet Explorer 7.0 Windows Windows XP
    5. 2009年9月16日13:01 | #5

      嗯 灰常不错 要能做出widgets 就更加完美了 哦哈哈

      [回复]

      CHINA CHINA Mozilla Firefox Mozilla Firefox 3.5.3 Windows Windows 7
    6. 2009年9月16日21:24 | #6

      没见你用呀?

      [回复]

      CHINA CHINA Internet Explorer Internet Explorer 7.0 Windows Windows XP
    7. 2009年9月16日22:20 | #7

      @houkai
      用了啊……
      热评文章

      [回复]

      CHINA CHINA Internet Explorer Internet Explorer 7.0 Windows Windows XP
    8. ton
      2010年4月7日04:09 | #8

      @麦子
      他指的是,你那个可以多页“相关文章”“随机文章”等切换效果的。。的全部源码。。

      [回复]

      CHINA CHINA Internet Explorer Internet Explorer 8.0 Windows Windows XP
    9. 小小
      2010年9月10日18:24 | #9

      麦子你好,我问一下哈,就是没有文章的时候,能不能显示这样啊。比如:

      热评文章
      当前无热评文章

      [回复]

      CHINA CHINA Mozilla Firefox Mozilla Firefox 3.6.8 Windows Windows XP
    1. 2010年9月16日22:48 | #1