能在一起要学会知足,期望放低一点,幸福就会多一点。

WordPress获取近期的最热门文章

技术文档 23363浏览 0评论

前面写了一篇文章:WordPress获取最热门文章,可以通过点击量来获取整个网站内最热门的文章,时间是从建站之日开始的。但这样会导致每次看到的热门文章都是那几篇,缺乏新鲜感。于是乎,把相关函数重新修改了一下,可以获取近期的最热门文章,比如30天或者多少天内的热门文章排行。这样应该就更加人性化了。

修改后的函数如下(红色处为修改的部分):

// Get Top Viewed Posts ,必需有wp-postviews插件
function get_mostviewed($limit = 5,$limitdays=30,$before = '<li>', $after = '</li>') {
global $wpdb;
if($limitdays==0||$limitdays=="")  $where = "";
else $where .= " AND post_date > '" . date('Y-m-d', strtotime("-$limitdays days")) . "'";

$most_viewed = $wpdb->get_results("SELECT DISTINCT $wpdb->posts.*, (meta_value+0) AS views FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_date < '".current_time('mysql')."'  ".$where." AND post_type <> 'page' AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' ORDER  BY views DESC LIMIT $limit");
if($most_viewed) {
foreach ($most_viewed as $post) {
$post_views = intval($post->views);
$post_title = htmlspecialchars(stripslashes($post->post_title));
$permalink = get_permalink($post->ID);
echo $before ."<a href=\"$permalink\">$post_title </a> ($post_views)". $after;
}
}
}
调用方式如下:其中第二个参数表示调用多少天内的最热门日志,默认为30天,设置为0的时候则调用全部的,即从建站之日开始)
“一个月内”文章点击排名:<?php get_mostviewed($limit = 25,30);?>
文章点击排名:  <?php get_mostviewed($limit = 25,0);?>
演示效果可参见侧边栏“热门文章”和“最热评论”,或者:http://loosky.net/?page_id=1444
参考:http://wange.im/three-in-one-update.html

转载请注明:自由的风 » WordPress获取近期的最热门文章

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (31)

  1. 能不能发一份完整的代码(不全红色部分)到我的邮箱,我不知道要如何改。谢谢nicholasyy@qq.com

    nicholasyy2011-06-07 22:07 回复
    • 不含红色部分的可以参考:http://loosky.net/?p=1316

      自由的风2011-06-07 22:14 回复
  2. 文中的“红色处为修改的部分” 是什么意思呢?要修改哪里?我在http://loosky.net/?p=1316 并没有看到相关信息,那里直接省略了红色部分内容。

    nicholasyy2011-06-07 22:44 回复
  3. 我明白了,你的意思是不是说 红色处是对比http://loosky.net/?p=1316这个页面的版本修改的地方? :???:

    nicholasyy2011-06-07 22:46 回复
    • 对,也就是增加的获取近期的热门文章这个功能。
      前面的那个版本是获取所有的热门排行

      自由的风2011-06-07 22:48 回复
  4. wp-postviews插件 我用的是最新版本,是不是这个插件不兼容,所以导致我贴到functions.php里面 运行出错?能不能提供兼容的版本下载?

    nicholasyy2011-06-07 22:49 回复
    • 应该不存在这个问题,我的都是最新版本。

      自由的风2011-06-07 22:53 回复
  5. 我这边直接粘贴代码到notepad++里面有部分是灰色的,你看下截图http://p13.freep.cn/p.aspx?u=v20_p1_photo_1106072259159216_0.png帮我诊断下是哪里有问题。

    nicholasyy2011-06-07 22:58 回复
  6. 评论的排名该如何调用?、

    nicholasyy2011-06-07 23:46 回复
  7. 您好,请问你浏览最多的文章如何显示计数?我这边最热文章后面只有标题没有浏览量的技术统计,而评论的标题后则有。

    nicholasyy2011-06-11 17:33 回复
    • <?php get_mostviewed($limit = 25,30,$length = 60,$before = '’, $after = ”,$show_post_views =true);?>
      注意这个:$show_post_views =true

      自由的风2011-06-11 22:15 回复
  8. 谢谢分享,正在研究这个方法。

    80后博客2011-08-18 12:44 回复
  9. functions.php 总是出错? 怎么回事啊?

    k-mummy2011-11-10 18:55 回复
    • 哪个代码不对吧?

      自由的风2011-11-10 21:52 回复
    • 说是从 “function get….” 开始出错! 也就一开始就出错! @k-mummy

      k-mummy2011-11-10 21:59 回复
      • 使用的我提供的代码?

        自由的风2011-11-10 22:16
  10. :kbz: 楼主,为啥 我的就不行,用的是最新版的WP和最新版的wp-postviews插件 是不是主题不支持啊,报错,我已经把中文符号改为英文的了,但是不报错了,却不见任何效果。

    蓝枫2011-11-30 14:00 回复
  11. :kbz: 错误就是什么 都不显示了 因为报错是字符问题 我解决了

    却调不出内容

    蓝枫2011-11-30 22:27 回复
    • 你可以加一些调试语句。看看执行到哪一步了。

      自由的风2011-12-01 08:49 回复
  12. :arrow: 找php朋友帮忙解决了。。。

    蓝枫2011-12-01 08:50 回复
  13. 有时插件,怎没有无插件的思路呢

    随意博客2012-10-29 04:33 回复
  14. 学习了,正好给我的博客也添加一个

    Embbnux2014-04-14 19:04 回复
    • 你的博客不错,干货很多。

      自由的风2014-04-14 20:06 回复
      • 能不能来个互链?同时linux爱好者

        embbnux2014-04-14 20:11
      • 已加!

        自由的风2014-04-20 11:10
      • 好的嘛,已添加

        Embbnux2014-04-20 11:20