纯代码打造WordPress酷炫CSS3读者墙

少羽.
少羽.
少羽.
4305
文章
92
评论
2018年12月10日23:02:35纯代码打造WordPress酷炫CSS3读者墙已关闭评论 6.5K 5288字阅读17分37秒

WordPress酷炫CSS3读者墙这个玩意一般不用我多说,大部分用WordPress的博主都了解过了。

不过他这个读者墙的排行是按年度划分的,也就是一年内的留言数排行。

为了增强评论的积极性,我们可以学习卢松松留言板的按月份排行的做法。甚至还可以一周为单位,进一步激励读者评论留言。 引用张戈博客纯代码打造WordPress酷炫CSS3读者墙

下面分享修改排名时间段的方法。

先看下原代码中的MySQL查询代码:

$query="SELECT COUNT(comment_ID) 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 24 MONTH ) AND user_id='0' AND comment_author_email != '改成你的邮箱账号' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 39";

大家可以看到查询代码中有一个comment_date > date_sub( NOW(), INTERVAL 24 MONTH )的关键性约束,也就是24个月的评论排行。那了解了这一点,事情就好办了!

根据mysql时间段条件约束,有如下语句可选:
①、将comment_date字段的时间限制在本年度范围:

where comment_date between date_sub(now(),interval 1 year) and now()

②、将comment_date字段的时间限制在本月范围:

where date_format(comment_date,'%Y-%m')=date_format(now(),'%Y-%m')

③、将comment_date字段时间限制在本周范围(从周日算起):

<strong>where yearweek(date_format(comment_date,'%Y-%m-%d')) = yearweek(now())</strong>

所以,正在在使用这个读者墙的朋友,如果要改变排行时间段,只要参考①②③,修改读者墙代码中的

where comment_date > date_sub( NOW(), INTERVAL 24 MONTH )

即可,非常简单!

Ps:大家也看到了,为什么年度排行和本周排行我用的是1 YEAR,和1 WEEK,而不是24 MONTH和7 DAY呢?

其实是存在一个逻辑性问题的:使用24 MONTH 或 7 DAY来作为时间段划分,逻辑上是存在问题的,因为这个时间段的起点是活动的,没法固定的!

比如,今天的近7天和明天的近7天是不一样的,这样查询的数据也就不准确了!所以,我采用了1 YEAR 和 1 WEEK,这样的好处就是明确的规定了时间段的起点,

比如本周这个时间段,那起点就是上周日。

好了,各时段的代码都已给出,下面贴上一周为时间段的完整代码:

<!-- 路人博客修改版读者墙排行代码 -->
<style type="text/css">
.readers-list{line-height:18px;text-align:left;overflow:hidden;_zoom:1}
.readers-list li{width:175px;float:left;*margin-right:-1px}
.readers-list a,.readers-list a:hover strong{background-color:#f2f2f2;background-image:-webkit-linear-gradient(#f8f8f8,#f2f2f2);background-image:-moz-linear-gradient(#f8f8f8,#f2f2f2);background-image:linear-gradient(#f8f8f8,#f2f2f2)}
.readers-list a{position:relative;display:block;height:36px;margin:4px;padding:4px 4px 4px 44px;color:#999;overflow:hidden;border:#ccc 1px solid;border-radius:2px;box-shadow:#eee 0 0 2px}
.readers-list img,.readers-list em,.readers-list strong{-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;transition:all .2s ease-out}
.readers-list img{width:36px;height:36px;float:left;margin:0 8px 0 -40px;border-radius:2px}
.readers-list em{color:#666;font-style:normal;margin-right:10px}
.readers-list strong{color:#ddd;width:40px;text-align:right;position:absolute;right:6px;top:4px;font:bold 14px/16px microsoft yahei}
.readers-list a:hover{border-color:#bbb;box-shadow:#ccc 0 0 2px;background-color:#fff;background-image:none}
.readers-list a:hover img{opacity:.6;margin-left:0}
.readers-list a:hover em{color:#EE8B17;font:bold 12px/36px microsoft yahei}
.readers-list a:hover strong{color:#EE8B17;right:150px;top:0;text-align:center;border-right:#ccc 1px solid;height:44px;line-height:40px}
</style>
<h2>年度评论排行 TOP3</h2>
<?php   
    $query1="SELECT COUNT(comment_ID) 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 between date_sub(now(),interval 1 year) and now() AND user_id='0' AND comment_author_email != '改成你的邮箱账号' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 4";   
    $wall = $wpdb->get_results($query1);    
    $maxNum = $wall[0]->cnt;   
    foreach ($wall as $comment)   
    {   
        $width = round(40 / ($maxNum / $comment->cnt),2);   
        //此处是对应的血条的宽度   
        if( $comment->comment_author_url )    
          $url = $comment->comment_author_url;    
        else $url="#"; 
  $avatar = get_avatar( $comment->comment_author_email, $size = '32', $default = get_bloginfo('wpurl').'/avatar/default.jpg' );    
        $tmp = "<li><a rel=\"friend\" alt=\"avatar头像\" target=\"_blank\" href=\"".$comment->comment_author_url."\">".$avatar."<em>".$comment->comment_author."</em> <strong>+".$comment->cnt."</strong></br>".$comment->comment_author_url."</a></li>";   
        $output1 .= $tmp;   
     }    
    $output1 = "<ul class=\"readers-list\">".$output1."</ul>";    
    echo $output1 ;   
?>
<!-- end 年度排行 -->  
<div class="clear"></div>			
<br />
<h2>本月评论排行 TOP6</h2>
<?php   
    $query2="SELECT COUNT(comment_ID) 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 date_format(comment_date,'%Y-%m')=date_format(now(),'%Y-%m') AND user_id='0' AND comment_author_email != '改成你的邮箱账号' AND post_password='' AND comment_approved='1' AND comment_type='') AS tempcmt GROUP BY comment_author_email ORDER BY cnt DESC LIMIT 8";   
    $wall = $wpdb->get_results($query2);    
    $maxNum = $wall[0]->cnt;   
    foreach ($wall as $comment)   
    {   
        $width = round(40 / ($maxNum / $comment->cnt),2);   
        //此处是对应的血条的宽度   
        if( $comment->comment_author_url )    
          $url = $comment->comment_author_url;    
        else $url="#"; 
  $avatar = get_avatar( $comment->comment_author_email, $size = '32', $default = get_bloginfo('wpurl').'/avatar/default.jpg' );    
        $tmp = "<li><a rel=\"friend\" alt=\"avatar头像\" target=\"_blank\" href=\"".$comment->comment_author_url."\">".$avatar."<em>".$comment->comment_author."</em> <strong>+".$comment->cnt."</strong></br>".$comment->comment_author_url."</a></li>";   
        $output2 .= $tmp;   
     }    
    $output2 = "<ul class=\"readers-list\">".$output2."</ul>";    
    echo $output2 ;   
?>    
<!-- end 本月排行 -->

细看可以发现,其实组合三种时间段,最关键性的地方就修改变量名,否则一样的变量名会导致数据重复!需要修改的变量名是:output query,我是改成了 output1 output2这种形式,相信你一看就懂!

最后,啰嗦一下,原文介绍是将CSS样式集成到style.css当中的,为啥我这直接和php写在一起呢?你想啊,如果是写到style.css那每个页面都需要加载一次,而写到页面代码中就只会在留言板加载,从而就起到优化的微小效果!当然,最好的方式可以将css代码保存为readers.css。然后只添加到留言板当中即可,因为做出css文件,浏览器会缓存到本地,那就进一步优化了留言板的加载速度了.

少羽.
  • 本文由 发表于 2018年12月10日23:02:35
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
禁用 WordPress 5.5 图片延迟加载功能 WordPress

禁用 WordPress 5.5 图片延迟加载功能

WordPress 5.5除了不断优化修改区块编辑器之外,还增加了几个新功能,其中的图片延迟加载功能,经本人测试,除了在火狐下有效果,在Chromium内核的浏览器中无效,难道是开发人员也和我一样只用...
⎛⎝WordPress⎠⎞添加好看的移动端底部菜单导航 WordPress

⎛⎝WordPress⎠⎞添加好看的移动端底部菜单导航

WordPress添加好看的移动端底部菜单导航,以前也分享过一个导航,不过那个不太好看,这里在分享一个导航在电脑端不显示,手机端显示,其它系统程序也可以用,把代码添加到主题的页脚文件就可以啦,CSS样...
WordPress纯代码实现独立相册功能 WordPress

WordPress纯代码实现独立相册功能

其实,这篇文章很早准备发了,一直拖,拖,拖硬生生拖到了现在,今天整合闲着,就更新一下博客吧! 想到这个文章,我忘记发了,今天就补上 hhh 正文 思路是前段时间写模板琢磨出来的,模板写废了,也不准备写...
广告也精彩