当前位置: 首页 > 设计 > 正文
avatar

轻松用PHP代码实现WordPress热评日志的调用,同时分享了3个截取函数mb_substr、mb_strcut、mb_strimwidth的使用方法。

经常看到有人的博客上面有热门日志,由于WordPress自身并没有文章查看次数的统计,所以热门日志基本就是评论最多的,而不是查看次数最多的。

很多的热门日志都是统计整个博客评论最多的文章,我觉得这一点不怎么好,可能很长很长一段时间这个统计都没什么变化,那么我们就希望加个时间段,比如一个月,或者一个星期。

这样的话就是一个比较自由的调用了,WordPress有一点很好,就是资源多,想什么基本都有,虽然不是完全符合自己的想法,但是带来的启示是无穷,一个简单的例子可以引申很多很多实用的例子。

有朋友希望我分享下我侧边栏的热评日志,我就简单的说下我用的。代码来着互联网,然后我稍稍做了点修改。

将下面的代码的复制到主题的function.php文件中。

// 获得热评文章
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->comment_count."条评论)\" >". mb_strimwidth($post->post_title,0,32)."</a></li>";
    }
    echo $output;
}

在主题中调用热评日志就把

<?php simple_get_most_viewed(); ?>

放到你想放的地方。

由于我是以TAB形式来显示3个日志的,所以为了保持3个样式一致,就得控制标题的长度,然后我把显示评论的条数加到了title里面,鼠标放上去的时候就能看到评论的条数。原来的版本是这样的。

// 获得热评文章
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;
}

我使用了mb_strimwidth函数来做了一个字数的切断。mb_strimwidth函数,是一个比较不错的PHP函数,获取与指定的宽度截断字符串。举个例子:

<?php echo mb_strimwidth(get_the_title(), 0, 32,"...") ?>
//  get_the_title() 获取文章标题
//  参数32,标题为32字节,中文的话就是16个字
//  超过32个字节的标题,以"..."

上面我使用的代码中为了保持样式一致,我没有加”…”。

10就是显示10条评论,30就是30天,这个要看你发表文章的频率了,发的比较勤快的,就把时间调整短一些,发的不怎么勤快的就调整长一些,比较自由。

mb_strimwidth不依赖WordPress,它是PHP的函数,不过好像不是所有的主机都能很好支持这个函数的,那么你还可以用mb_substr和mb_strcut来截取,mb_substr、mb_strcut、mb_strimwidth各有特色。看例子就知道了

mb_substr

<?php echo mb_substr(get_the_title(), 0, 16,"utf-8"); ?>
//  get_the_title() 获取文章标题
//  参数16,标题为16个汉字,个人感觉中英文混合的长度控制的不是很好
//  "utf-8"  同时要对他进行编码定义,不然容易乱码

mb_strcut

<?php echo mb_strcut(get_the_title(), 0, 32,"utf-8"); ?>
//  get_the_title() 获取文章标题
//  参数32,标题为32字节,同样的,个人感觉中英文混合的长度控制的不是很好
//  "utf-8"  同时要对他进行编码定义,不然容易乱码

所以还是mb_strimwidth感觉好一些。大家可以自由发挥了~

本文固定链接: http://www.weisay.com/blog/wordpress-hot-article-invocation.html | 威言威语

WordPress热评日志的调用:目前有65 条评论

  1. avatar
    28楼
    异同博客 Mozilla Firefox Windows

    谢谢分享,用到我自己博客了

    2013-12-04 20:47 [回复]
  2. avatar
    27楼
    子非我 Google Chrome Windows

    终于在这里找到了 :cool:

    2013-01-01 20:10 [回复]
  3. avatar
    26楼
    hemingway Google Chrome Windows

    我是新手,所以我是用插件实现的,你这个代码很好,以后有需要就拿来用,谢谢

    2012-03-24 00:44 [回复]
  4. avatar
    25楼
    毛毛 Internet Explorer Windows

    麻烦给看看,我网站的热评日志一个也没有,不知道怎么回事了,随机和最新日志都正常

    2012-02-15 02:47 [回复]
    • avatar
      William Google Chrome Windows

      你用的应该是之前下载的吧,你现在到上面下载最新的,然后全部替换你原来的,我2月8号刚刚更新过,你出现的这个问题应该就能正常显示了。

      2012-02-15 10:18 [回复]
  5. avatar
    24楼
    amu Internet Explorer Windows

    我想知道这篇文章中的代码显示效果是怎么做出来的

    2011-03-13 17:54 [回复]
    • avatar
      William Internet Explorer Windows

      用的插件 SyntaxHighlighter Evolved

      2011-03-15 22:37 [回复]
  6. avatar
    23楼
    蛋糕 Internet Explorer Windows

    学习!

    2011-01-01 02:20 [回复]
  7. avatar
    22楼
    速度主机 Internet Explorer Windows

    由一个WP-KIT-CN 插件 已经把侧边栏的一切搞定了。。。什么随机文章啊 热门文章啊 最近文章 最新评论等等 全部搞定。

    2010-12-22 02:59 [回复]
  8. avatar
    21楼
    有点蓝 Opera Windows

    这个主题很强大,博主的技术也很牛啊。

    2010-12-21 12:38 [回复]
    • avatar
      William Mozilla Firefox Windows

      主题的确强大,我技术就一般了,呵呵

      2010-12-21 21:55 [回复]
  9. avatar
    20楼
    wmtimes Mozilla Firefox Windows

    那你应该显示个评论条数啊。

    2010-12-21 02:52 [回复]
    • avatar
      William Mozilla Firefox Windows

      显示的啊,加在title里面了,鼠标放上面,就看见了。

      2010-12-21 21:54 [回复]
  10. avatar
    19楼
    朵未 Maxthon Windows

    我一般都是用插件实现的,收藏下,以后折腾的时候可以参考下。

    2010-12-19 22:12 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      哈哈,我一般是不用插件,能代码解决的就用代码

      2010-12-20 18:11 [回复]
  11. 我忘了 我那个是哪来的~

    2010-12-19 15:56 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      网上来的,哈哈

      2010-12-20 18:10 [回复]
  12. avatar
    17楼
    任侠 Internet Explorer Windows

    wp的diy异次元的软件世界搞的很不错

    2010-12-19 11:42 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      恩啊,他那个站搞很久了,比较棒

      2010-12-20 18:10 [回复]
  13. avatar
    16楼
    小杰博客 Mozilla Firefox Windows

    不知道和我侧边栏的那个“热评文章”是不是一个原理哦

    2010-12-19 08:27 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      应该都很类似的

      2010-12-20 18:09 [回复]
  14. avatar
    15楼
    浩子窝窝 Internet Explorer Windows

    你搞得也太复杂了,休息休息撒。。

    2010-12-19 01:48 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      学习如逆水行舟,不进则退。哈哈。

      2010-12-20 18:08 [回复]
  15. avatar
    14楼
    爱玩电脑 Internet Explorer Windows

    菜鸟来学习啦~~

    2010-12-18 18:23 [回复]
    • avatar
      William Internet Explorer Windows

      不要谦虚哦~

      2010-12-18 22:54 [回复]
  16. avatar
    13楼
    苏扬 Google Chrome Windows

    这个我也在用,感觉还不错,尤其是在手机上用UC看博客,效果挺不错的,现在要解决的一个问题就是 手机上点击查看更多 显示404的问题,手机很多功能都不支持,必须使用绝对的URL!

    2010-12-18 16:14 [回复]
    • avatar
      William Internet Explorer Windows

      你还想支持伪静态呢啊,想法不错,以后我去开发这个浏览器好了,哈哈

      2010-12-18 22:53 [回复]
  17. avatar
    12楼
    木本无心 Google Chrome Windows

    折腾wp,乐趣无穷。哈哈

    2010-12-18 12:25 [回复]
    • avatar
      William Internet Explorer Windows

      那是,生命就在于折腾~

      2010-12-18 22:52 [回复]
  18. avatar
    11楼
    周洋 世界之窗浏览器 Windows

    威,网站上的这些图是哪里找来的啊,还是自己做的?很不错啊

    2010-12-18 09:53 [回复]
    • avatar
      William Internet Explorer Windows

      网上找了点,自己整了点。

      2010-12-18 22:52 [回复]
      • avatar
        周洋 世界之窗浏览器 Windows

        现在威哥很强力啊!

        2010-12-19 11:01 [回复]
        • avatar
          William 世界之窗浏览器 Windows

          伪装的很强大,哈哈。其实是菜鸟~

          2010-12-20 15:09 [回复]
          • avatar
            周洋 世界之窗浏览器 Windows

            威,你TMD就是太谦虚,有时候就要强势点,霸道点!

            2010-12-20 15:45 [回复]
            • avatar
              William 世界之窗浏览器 Windows

              水平不够,强势不起来。。。。

              2010-12-20 18:18 [回复]
  19. avatar
    10楼
    david Mozilla Firefox Windows

    我发现我的头像怎么变了呀。。。汗汗。。

    2010-12-18 03:32 [回复]
    • avatar
      William Internet Explorer Windows

      没有啊,很正常啊。本地化了,开始是调用的本地的,刷新就换成自己的了

      2010-12-18 22:52 [回复]
      • avatar
        david Mozilla Firefox Windows

        哦哦,原来是这样的呀。我以为头像啥变了。对了,是你安装了什么吗?

        2010-12-21 01:52 [回复]
        • avatar
          William Mozilla Firefox Windows

          本地化G头像,新发表的评论先调用的本地默认的头像,刷新就换成自己的了

          2010-12-21 22:15 [回复]
  20. avatar
    9楼
    david Mozilla Firefox Windows

    这个还是蛮有用的,方便访客和自己查看一些文章哦。。

    2010-12-18 03:31 [回复]
    • avatar
      William Internet Explorer Windows

      是滴是滴~增加评论

      2010-12-18 22:50 [回复]
      • avatar
        david Mozilla Firefox Windows

        恩恩,那是哦。。我博客也有呢。

        2010-12-21 01:54 [回复]
  21. avatar
    8楼
    猪猪懒人窝 Internet Explorer Windows

    我很少往博客上加这样的代码

    2010-12-17 22:04 [回复]
    • avatar
      William Internet Explorer Windows

      呵呵,实用的代码还是可以加点的

      2010-12-18 22:50 [回复]
  22. avatar
    7楼
    zwwooooo Opera Windows

    这个用了 一段时间,今天换了,换为点击率了。

    2010-12-17 21:47 [回复]
    • avatar
      William Internet Explorer Windows

      点击率的是不是要跟一些统计点击次数的插件或者代码联系在一起,WP好像自带没有统计点击率的吧?

      2010-12-18 22:49 [回复]
      • 因为我本身用了wp-postviews这个插件

        2010-12-18 23:29 [回复]
        • avatar
          William Internet Explorer Windows

          我想的也是通过这个插件实现的,哈哈

          2010-12-19 00:26 [回复]
  23. avatar
    6楼
    竹海听涛 Internet Explorer Windows

    每次看你的百度AD都是性病广告…..哈哈……….

    我依然期待PJ4

    2010-12-17 21:00 [回复]
    • avatar
      William Internet Explorer Windows

      广告都是给适合的人看的,我每次看到的都是买房~
      某人看到的什么看来很需要哦,哈哈哈哈~

      2010-12-18 22:48 [回复]
  24. avatar
    5楼
    雅岚 Google Chrome Windows

    我一看代码就头疼,哎呀呀,岚女飞走也。。。

    2010-12-17 13:35 [回复]
    • avatar
      William Google Chrome Windows

      代码是美女,越看越有滋味~

      2010-12-17 18:30 [回复]
      • avatar
        雅岚 Mozilla Firefox Windows

        我再来痛苦地学习下。。。

        2010-12-21 14:46 [回复]
        • avatar
          William Mozilla Firefox Windows

          额,怎么感觉是上刀山下火海?

          2010-12-21 21:53 [回复]
  25. avatar
    4楼
    娟兒 360安全浏览器 Windows

    过来看你啦,嘻嘻

    2010-12-17 11:58 [回复]
    • avatar
      William Google Chrome Windows

      欢迎欢迎~

      2010-12-17 18:30 [回复]
  26. avatar
    地板
    龙城瓶子 Mozilla Firefox Windows

    A9自带的热门文章就是按评论来的
    换你这个试试
    呵呵

    2010-12-17 09:07 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      热门日志基本都是按评论来的,不过整个博客的热门日志相对而言没有近期的热评日志来的更加自由。

      2010-12-17 10:38 [回复]
  27. avatar
    板凳
    Jungle Mozilla Firefox Windows

    代码行数不多 介要修改文件 升级时麻烦 能不能做成插件啊?mb_strimwidth如果字符串有汉字字母和数字时好像返回结果尾部容易出现乱码

    2010-12-17 01:34 [回复]
    • avatar
      William 世界之窗浏览器 Windows

      恩,这个乱码的话还是跟代码的编码有关,开始定义好的正常是不会乱码的。

      2010-12-17 10:41 [回复]
  28. avatar
    沙发
    冰棱 Mozilla Firefox Windows

    哈哈,沙发。原来威兄也是个夜猫子。
    刚入手Wordpress,学习中!

    2010-12-17 00:28 [回复]
    • avatar
      William Mozilla Firefox Windows

      嘿嘿,我就准备睡觉了,大学的时候都是猫很晚的,现在要上班,我已经纠正很多了。
      WP我还不是老手,比新手好一点,我也在学习。

      2010-12-17 00:31 [回复]
      • avatar
        skidu 搜狗浏览器 Windows

        老菜鸟路过>_<

        2010-12-17 18:06 [回复]
        • avatar
          William Google Chrome Windows

          握个手。我也是老菜鸟~

          2010-12-17 18:46 [回复]

发表评论

question razz sad smile redface biggrin surprised eek confused cool lol mad rolleyes wink neutral cry

快捷键:Ctrl+Enter