WordPress制作读者评论排行榜[无插件]

所谓的读者评论排行榜,就是展示在本博客评论最多的几个读者的头像(如果你还没有自己的个性头像或不知道怎么设置头像,请点此设置通用头像),按照读者的评论数进行排名,同时附上他们的博客网址,以示鼓励。这个通常也称为"读者墙",我将这个栏目命名为"30天内最活跃的读者"。

     其实这个东西之前已经有很多人分享过代码,目前发现了两个版本"免插件版侧边栏读者墙","免插件版側邊欄讀者牆",代码都大同小异,不过这帮人只是纯粹的分享代码,并没有道出其中的原委,对PHP不太熟悉的WordPress博主来说,只能照搬,还不能自己做修改。那我今天就来跟大家解释这其中的玄机,兴许会对你有所帮助。

读者评论排行榜

     以下是我自行修改后的代码,你可以直接用到你的WordPress主题中,如放在 single.php 、 sidebar.php 或 page.php中,并不是非得放在侧边栏,注意修改后用UTF-8编码保存,否则中文可能会乱码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<div id="hotfriends">
    <h3>30天内最活跃的读者</h3> 
    <ul>
<?php
/**
 * WordPress制作读者评论排行榜
 * @author: Ludou  
 * @Email : zhouzb889@gmail.com
 * @Blog  : http://www.ludou.org/
 */


     global  $wpdb ;
     // 执行数据库查询
     $counts  =  $wpdb -> get_results ( "SELECT COUNT(comment_author) AS cnt, comment_author, comment_author_url, comment_author_email
        FROM {$wpdb->prefix}comments
        WHERE comment_date > date_sub( NOW(), INTERVAL 1 MONTH ) 
            AND comment_approved = '1' 
            AND comment_author_email != 'example@example.com'
            AND comment_author_url != ''
            AND comment_type = ''
            AND user_id = '0'
        GROUP BY comment_author_email
        ORDER BY cnt DESC
        LIMIT 15"
) ;

     $mostactive  =  '' ;
     if  (  $counts  )  {
     // 输出读者列表       
         foreach  ( $counts  as  $count )  {
             $c_url  =  $count -> comment_author_url ;
             $mostactive  .=  '<li>'  .  '<a href="' .  $c_url  .  '" title="'  .  $count -> comment_author  . ' 发表 ' .  $count -> cnt  .  ' 条评论" target="_blank">'  . get_avatar ( $count -> comment_author_email ,  55 ,  '' ,  $count -> comment_author  .  ' 发表 '  .  $count -> cnt  .  ' 条评论' )  .  '</a></li>' ;
         }
         echo  $mostactive ;
     } 
?>
    <div style="clear:both;"></div>
    </ul>
</div> <!-- / hotfriends -->

     与本文开头提到的两个读者墙版本不同的是,我改写了SQL查询语句,使得SQL查询的时间大大缩短了。我做了个实验,相同的查询结果,前两个版本查询花费 0.0240 秒,而我的这个版本查询只花费了 0.0041 秒,时间效率可见一斑,因为我这个版本只查询一个数据库表wp_comments,没有使用嵌套查询,不考虑加密文章。如果你不在乎这点时间效率,使用哪个版本都一样。

     以上14 ~ 24行代码用于执行数据库查询的SQL,你可以自己设定条件来决定哪些读者可以进入你的评论排行榜单,下面讲讲如何更改这部分代码,自定义你的读者评论排行榜结果。

一、限定排行榜的时间范围

     第16行代码中 INTERVAL 1 MONTH 用于只统计最近一个月的评论,这个排行榜中只显示一个月内最活跃的读者,如果你想自定义时间范围,可参照下表对其进行更改:

代码时间范围
INTERVAL 1 MONTH最近一个月内
INTERVAL 3 YEAR最近3年内
INTERVAL 2 WEEK最近2周内
INTERVAL 6 DAY最近6天内

如果你只想显示本月的排行榜,请将第16行代码改成:
WHERE MONTH(comment_date)=MONTH(NOW()) and year(comment_date)=year(now())

二、限定评论是否审核

     第17行代码 AND comment_approved = '1' 用于限定只统计已经通过审核的评论,如果你想统计未通过审核的评论,你可以将这一句代码删除。

三、排除某些读者

     第18行代码 AND comment_author_email != 'example@example.com' 用于排除不计入榜单的评论者,例如博主自己,将email地址改成博主的Email即可。这里我觉得使用评论者的Email作为限定条件比昵称更好,毕竟头像也是由Email决定的。如果你想排除多个评论者,可以多写几行类似的代码,Email不同即可,如:

1
2
AND comment_author_email ! =  'example1@example.com'
AND comment_author_email ! =  'exam2@exam.com'
四、是否包括不填URL的评论者

     第19行代码 AND comment_author_url != '' 排除没填URL的评论者,也就是那些没有网站的评论者将无法进入你的排行榜。

五、限定评论的类型

     第20行代码 AND comment_type = '' 限定了评论的类型,这行代码排除了 trackback 和 pingback,如果你还想统计这两种评论类型,你可以将此行代码删除。

六、是否包含博客的注册用户

     第21行代码 AND user_id = '0' 使排行榜中不包含博客的注册用户(包括博主),注册用户将无法进入你的排行榜。如果你的博客有大量的注册用户,或者你的博客只有博主这个注册用户,你可以将此行代码删除。

七、限定排行榜中的人数

     第24行代码中 LIMIT 15 用于限定排行榜中的人数,这里限制输出15位读者,你可以根据需要做一下更改。

八、限制头像的大小

     第31行代码中的 55 限定了输出的头像大小为 55 * 55,如果你不需要这么大的尺寸,你可以将这个数值改小点。

     最后提供CSS样式,也就是控制这个排行榜怎么显示的代码。复制到主题目录下的style.css中即可,你可以根据需要做些更改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#hotfriends  {
     text-align : center ;
}
#hotfriends ul  {
     padding : 7px ;
}
#hotfriends ul li  {
     float : left ;
     list-style : none  outside  none ;
     margin : 6px ;
     padding : 0 ;
}
#hotfriends h3  {
     font-size : 15px ;
     margin : 7px  7px  0 ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在全屏模式下显示wordpress页面和文章,以方便阅读。 以全屏模式显示wordpress页面和帖子,以便于阅读。 现在,无需退出全屏浏览同一网站上的链接。 如果您有任何问题,请首先检查“更新的功能”。 因为这仍然不是我所称的正式版本,所以期望会有错误。 我很想知道我还没有发现的错误,所以我可以将它们压扁。 它目前正在开发中,因此代码需要优化,UI和文件结构也需要工作。 如果您有任何错误,请找到任何无法使用的wordpress网站或有任何请求,请在Yascob09@gmail.com上进行评论或向我发送电子邮件。 如果右键单击图标,则可以通过下拉菜单进入选项菜单。 在这里,您可以找到几个替代选项以自定义体验。 计划有更多选择。 我不会保证我会添加请求的功能,但会解释为什么我决定不这样做。 无论如何,尽情享受吧! =)PS由于其网站的设置方式,它也可以在Baka-Tsuki上使用。 更新的功能:0.8.1版:现在,如果您不以隐身方式进入,它将记录每章导航到历史记录,并在重新加载时加载并打开正确的页面。 因此,它也可以被视为某种“错误修正”。 滚动替代将在下一个更新中发布。(我保证)版本0.8.0:添加了正确的滚动记忆。 请不要在某些页面上使此功能变慢(我正在为您看BT)。 我正在为以后添加替代选项。 现在,如果对您不起作用,则可以在选项中将其禁用。 重新设计选项菜单。 试试看。 =)还需要一点代码清除,以使其运行得更快。 版本0.7.3:双重包装问题的快速错误修复(2个滚动条)版本0.7.2:添加了“隐藏评论部分”选项。 0.7.1版:Css错误修正。 版本0.7:修复了全屏多次按下按钮的问题。 重做并部分优化了代码。 使wordpress帖子检测更加智能,并开始添加blogspot支持。 注意:加载页面后,您可能会注意到在全屏按钮工作之前会稍有延迟。 它只需花费几秒钟即可生效。 版本0.6.2:错误修复:修复了背景覆盖并改进了其逻辑版本0.6.1.1:错误修复:修复了选项页面。 现在应该可以正常工作了。 版本0.6.1:增加了在同一站点上的帖子之间切换时保持全屏的功能增加了全屏关闭后返回初始页面的选项更多错误修正版本0.5.1-0.5.3:错误修正和代码优化 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值