威言威语
我愿像茶,苦涩留心,清香予人。
威言威语
当前位置: 首页 > 设计 > 正文

WordPress热评日志的调用

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

经常看到有人的博客上面有热门日志,由于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感觉好一些。大家可以自由发挥了~

您可能还会对这些文章感兴趣!

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

  1. 异同博客
    28楼
    异同博客:Firefox 25.0 Windows 7

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

    2013-12-04 20:47 回复
  2. 子非我
    27楼
    子非我:Google Chrome 21.0.1180.89 Windows XP

    终于在这里找到了 :cool:

    2013-01-01 20:10 回复
  3. hemingway
    26楼
    hemingway:Google Chrome 17.0.963.79 Windows 7

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

    2012-03-24 00:44 回复
  4. 毛毛
    25楼
    毛毛:Internet Explorer 8.0 Windows XP

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

    2012-02-15 02:47 回复
    • William
      WilliamGoogle Chrome 16.0.912.77 Windows 7

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

      2012-02-15 10:18 回复
  5. amu
    24楼
    amu:Internet Explorer 7.0 Windows XP

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

    2011-03-13 17:54 回复
  6. 蛋糕
    23楼
    蛋糕:Internet Explorer 8.0 Windows XP

    学习!

    2011-01-01 02:20 回复
  7. 速度主机
    22楼
    速度主机:Internet Explorer 6.0 Windows XP

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

    2010-12-22 02:59 回复
  8. 有点蓝
    21楼
    有点蓝:Opera 11.00 Windows XP

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

    2010-12-21 12:38 回复

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

gravatar

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