首页 » 建站技术 » WordPress » 浏览内容

WordPress热评日志的调用


2010-12-18 08:58:43 1,915 0 发表评论 字体: 作者:C.K.
标签: WordPress代码

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

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

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5066 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14166723 位访客

    广告区 Guǎng Gào