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

WordPress 免插件版侧边栏读者墙


2010-12-24 17:17:56 3,074 0 发表评论 字体: 作者:C.K.
标签: WordPress

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

读者墙功能最近好像比较火,一方面可以鼓励访客留言,另一方面也方便博主回访。我最初是在林木木那里看到的这个功能、接着又分别在 whispererzwwoOoOo 那里看到了这个效果,有些心动,之后又在六维博客中再次看到了免插件实现读者墙的功能,于是惹起了我折腾 WordPress 的热血沸腾。

用插件实现的方法我就不多介绍了,我就爱玩代码:

一、函数部分:

将以下代码复制到 functions.php 中:

$identity="comment_author";
  • $passwordpost = " AND post_password=''";
  • $userexclude = " AND user_id='0' and comment_author != '万戈'";
  • $approved = " AND comment_approved='1'";
  • $shownumber = 24;
  • $counts = $wpdb->get_results("SELECT COUNT(" . $identity . ") AS cnt, comment_author, comment_author_url,comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE MONTH(comment_date)=MONTH(now()) and YEAR(comment_date)=YEAR(now())" .
  • $userexclude . $passwordpost . $approved . ") AS tempcmt GROUP BY " . $identity . " ORDER BY cnt DESC LIMIT " . $shownumber);
  • 二、引用部分:

      将以下代码复制到 sidebar.php 中:

    <div class="widget">
  • <h3>本月水王</h3>
  • <ul class="ffox_most_active">
  • <?php if ( $counts ) : foreach ($counts as $count) :
  • echo  '<li>' . '<a href="'. $count->comment_author_url . '" title="' . $count->comment_author . ' ('. $count->cnt . '评论)">' .get_avatar($count->comment_author_email,32).'</a></li>';
  • endforeach; endif;
  • ?>
  • </ul>
  • </div>
  •   三、样式部分:

      以下样式仅作参考。

    .sidebar .widget .ffox_most_active li {
  • list-style:none;
  • float:left;
  • border:none;
  • padding-left:0;
  • width:41px;
  • background:none;
  • }
  • .sidebar .widget .ffox_most_active img.avatar {
  • width:32px;
  • height:32px;
  • }
  •   就这样,免插件版的读者墙就实现了,效果可以见我的侧边栏(除了首页侧边栏)。其中代码和样式主要参考自 zwwoOoOo 的http://zww.me/archives/24671。

    免插件读者墙完整精确免修改版代码如下:

    <h2>Most Active Friends</h2> //标题,可根据需要增加样式
  • <ul>
  • <?php
  • $my_email = "'" . get_bloginfo ('admin_email') . "'";
  • //获取管理员邮箱
  • $counts = $wpdb->get_results("
  • SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID) WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH )
  • //1 MONTH就是一个月之内的排行
  • AND user_id='0'
  • AND comment_author_email != $my_email //根据邮箱判断,输出非博主的数据.
  • AND post_password=''
  • AND comment_approved='1'
  • AND comment_type='') AS tempcmt
  • AS tempcmt GROUP BY comment_author_email
  • //按同一作者邮箱把评论数量归类相加
  • ORDER BY cnt
  • DESC LIMIT 12"); //最后一个数字12就是显示头像的数量。
  • foreach ($counts as $count) {
  • $c_url = $count->comment_author_url;
  • $mostactive .= '<li>' . '<a href="'. $c_url . '" title="' . $count->comment_author . ' ('. $count->cnt . 'comments)">' . get_avatar($count->comment_author_email, 40) . '</a></li>';
  • }</div>
  • echo $mostactive;
  • ?>
  • </ul>
  • 上面代码中标注出了INTERVAL 1 MONTH )
    //1 MONTH就是一个月之内的排行
    这个可以修改成1 YEAR ,意思是一年内的排行,然后将DESC LIMIT 12 中的12改成100,就变成我现在友情链接页面的1年内评论排行的读者墙了.
    如果修改成1 DAY 或者 24 HOUR 就会显示1天内或24小时内留言的朋友的头像。
    根据评论的最后时间排列的.
    这就需要将上面代码中ORDER BY cnt
    改为 ORDER BY comment_date_gmt
    然后删除掉DESC LIMIT 12,因为我们并不知道24小时内有多少人会留言.
    所以就不需要限定显示的数量了.

      网站统计 Statistics

      • 创建时间: 2005年1月3日 距今4764 天
      • 日志总数: 2461
      • 评论总数: 630
      • 标签总数: 654
      • 链接总数: 273
      • 最后更新: 2017-7-1 18:16:33
      • 您是本站第 13199426 位访客

      广告区 Guǎng Gào