如何实现多作者的WordPress站点经验值排行榜

原创 2016-11-16 阅读 135 次 评论 29 条

前几天boke112导航推出了投稿作者等级及相应福利,其中涉及到一个就是经验值排行榜,很多博主站长都想了解这个排行榜是如何实现的,所以今天boke112特意将这个实现方法分享给大家,希望集合大家的智慧进一步优化这个代码。

如何实现多作者的WordPress站点经验值排行榜

准备工作:

  • 懂得建立自定义页面(不懂的请移步:《如何建立WordPress自定义页面》);
  • 想好作者等级及经验值是如何计算的;
  • 安装有统计阅读数的插件WP-PostViews,如果是其他方式统计浏览数,请自行修改第一步的代码。

多作者的WordPress站点经验值排行榜实现方法:

1、打开自定义页面(如排行榜页面)模板,找到以下代码:

  1. <?php the_content(); ?>

然后在它下方添加以下代码:

  1. <div id="zzphbbg"  style="text-align:center;vertical-align:middle;">
  2. <table width="100%">
  3. <tbody>
  4. <tr>
  5. <td width="10%"><strong>排名</strong></td>
  6. <td width="20%"><strong>作者</strong></td>
  7. <td width="10%"><strong>等级</strong></td>
  8. <td width="20%"><strong>经验值</strong></td>
  9. <td width="10%"><strong>文章数</strong></td>
  10. <td width="20%"><strong>阅读数</strong></td>
  11. <td width="10%"><strong>评论数</strong></td>
  12. </tr>
  13.     <?php
  14.     global $wpdb$post;
  15.     $zzphb = '';
  16.     $zuozhe_viewed = $wpdb->get_results("SELECT count($wpdb->posts.ID) as wzzs,sum($wpdb->posts.comment_count) as plzs, sum(meta_value+0) AS ydzs,(count($wpdb->posts.ID)*100+sum(meta_value+0)+sum($wpdb->posts.comment_count)*5) as jyz,$wpdb->posts.post_author as userid FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->postmeta.post_id = $wpdb->posts.ID WHERE post_author!='1' AND post_status = 'publish' AND meta_key = 'views' AND post_password = '' GROUP BY userid order by jyz DESC");
  17.     if($zuozhe_viewed) {
  18.         $i = 0;
  19.         foreach ($zuozhe_viewed as $post) {
  20.             $zzwzs = $post->wzzs;
  21.             $zzydzs = $post->ydzs;
  22.             $zzplzs = $post->plzs;
  23.             $zzjyz = $post->jyz;
  24.             $i++;
  25.             $zznc = get_the_author_meta( 'nickname', $post->userid);
  26.             if($zzjyz>=1 && $zzjyz<10000){$zzdj='<a class="vip1" title="作者等级LV.1为基础级,距离下级还差'.(10000-$zzjyz).'"></a><br/>【基础级】';}
  27.             if($zzjyz>=10000 && $zzjyz<100000){$zzdj='<a class="vip2" title="作者等级LV.2为入门级,距离下级还差'.(100000-$zzjyz).'"></a><br/>【入门级】';}
  28.             if($zzjyz>=100000 && $zzjyz<500000){$zzdj='<a class="vip3" title="作者等级LV.3为职业级,距离下级还差'.(500000-$zzjyz).'"></a><br/>【职业级】';}
  29.             if($zzjyz>=500000 && $zzjyz<1000000){$zzdj='<a class="vip4" title="作者等级LV.4为大神级,距离下级还差'.(1000000-$zzjyz).'"></a><br/>【大神级】';}
  30.             if($zzjyz>=1000000){$zzdj='<a class="vip5" title="作者等级LV.5为宗师级"></a><br/>【宗师级】';}
  31.             if ($i == 1) {
  32.             $tt = "<i class='novel-rank-icon novel-rank-1'></i>";
  33.         }
  34.         else if ($i == 2) {
  35.             $tt = "<i class='novel-rank-icon novel-rank-2'></i>";
  36.         }
  37.         else if ($i == 3) {
  38.             $tt = "<i class='novel-rank-icon novel-rank-3'></i>";
  39.         }
  40.         else {
  41.             $tt = $i;
  42.         }
  43.             $zzphb .= "<tr><td width='10%'><span class='fz16 red'>$tt</span></td>
  44. <td width='20%'><span class='fz16 red'><a href=\"http://boke112.com/author/"$post->userid . "/\" title=\""$zznc . "在boke112导航的专栏\" rel=\"nofollow\" target=\"_blank\">$zznc</a></span></td>
  45. <td width='10%'><span class='fz16 red'>$zzdj</span></td>
  46. <td width='20%'><span class='fz16 red'>$zzjyz</span></td>
  47. <td width='10%'><span class='fz16 red'>$zzwzs</span></td>
  48. <td width='20%'><span class='fz16 red'>$zzydzs</span></td>
  49. <td width='10%'><span class='fz16 red'>$zzplzs</span></td>
  50. </tr>";
  51.         }
  52.     }
  53.     echo $zzphb;
  54. ?>
  55. </tbody>
  56. </table>
  57. </div>

其中,代码中的作者等级及对应的经验值请自行修改,经验值计算代码:

  1. (count($wpdb->posts.ID)*100+sum(meta_value+0)+sum($wpdb->posts.comment_count)*5)

的意思是作者文章总数乘以100加上文章总阅读加上文章总评论数乘以5。其中的倍数或经验值计算方式请自行修改。

2、添加以下CSS代码到主题的style.css文件中

  1. #zzphbbg td{text-align:center;vertical-align:middle;}
  2. .novel-rank-icon {
  3.     width17px;
  4.     height22px;
  5.     displayinline-block;
  6.     background-imageurl(images/zzdj.png);
  7.     background-repeatno-repeat;
  8. }
  9. .novel-rank-icon.novel-rank-1 {
  10.     background-position: 0 0;
  11. }
  12. .novel-rank-icon.novel-rank-2 {
  13.     background-position: 0 -36px;
  14. }
  15. .novel-rank-icon.novel-rank-3 {
  16.     background-position: 0 -74px;
  17. }
  1. /*作者VIP等级显示功能的样式*/
  2. .vp,.vip,.vip1,.vip2,.vip3,.vip4,.vip5,.vip6,.vip7{backgroundurl(images/vip.png) no-repeat;displayinline-block;overflowhidden;bordernone;}
  3. .vp{background-position:-515px -2px;width16px;height16px;margin-bottom: -3px;}
  4. .vp:hover{background-position:-515px -22px;width16px;height16px;margin-bottom: -3px;}
  5. .vip{background-position:-494px -3px;width16px;height14px;margin-bottom: -2px;}
  6. .vip:hover{background-position:-494px -22px;width16px;height14px;margin-bottom: -2px;}
  7. .vip1{background-position:-1px -2px;width46px;height14px;margin-bottom: -1px;}
  8. .vip1:hover{background-position:-1px -22px;width46px;height14px;margin-bottom: -1px;}
  9. .vip2{background-position:-63px -2px;width46px;height14px;margin-bottom: -1px;}
  10. .vip2:hover{background-position:-63px -22px;width46px;height14px;margin-bottom: -1px;}
  11. .vip3{background-position:-144px -2px;width46px;height14px;margin-bottom: -1px;}
  12. .vip3:hover{background-position:-144px -22px;width46px;height14px;margin-bottom: -1px;}
  13. .vip4{background-position:-227px -2px;width46px;height14px;margin-bottom: -1px;}
  14. .vip4:hover{background-position:-227px -22px;width46px;height14px;margin-bottom: -1px;}
  15. .vip5{background-position:-331px -2px;width46px;height14px;margin-bottom: -1px;}
  16. .vip5:hover{background-position:-331px -22px;width46px;height14px;margin-bottom: -1px;}
  17. .vip6{background-position:-441px -2px;width46px;height14px;margin-bottom: -1px;}
  18. .vip6:hover{background-position:-441px -22px;width46px;height14px;margin-bottom: -1px;}
  19. .vip7{background-position:-611px -2px;width46px;height14px;margin-bottom: -1px;}
  20. .vip7:hover{background-position:-611px -22px;width46px;height14px;margin-bottom: -1px;}

3、将以下图片存放到主题的images文件夹中,如果不是这个文件夹,注意修改CSS代码中的图片路径哦。

作者VIP等级图片

作者等级排行榜前3名图片

总结

其实这个排行榜的实现方法就跟我们那些读者墙的实现方法差不多,通过SQL语句查询出相应的数据后展示出来即可,剩下的就是调整一下CSS样式而已。如果担心通过SQL实时查询显示数据有压力,或担心被别人刷数据,可以为这个排行榜页面增加一个验证码之类的,只有验证码正确后才可以显示。具体怎么折腾就看大家的想法了,本文只是以boke112导航的投稿作者排行榜来说明一下思路而已。

本文地址:http://boke112.com/3647.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:aiboke112
版权声明:本文为原创文章,版权归  所有,欢迎分享本文,转载请保留出处!
WordPress免费响应式主题:Nana
CPA教学与引流技巧

发表评论

呲牙憨笑坏笑偷笑色微笑抓狂睡觉酷流汗鼓掌大哭可怜疑问晕惊讶得意尴尬发怒奋斗衰骷髅啤酒吃饭礼物强弱握手OKNO勾引拳头差劲爱你

表情

  1. 李光春
    李光春 【队长】 @回复

    不错,vip制

  2. 青檬网
    青檬网 【农民】 @回复

    看起来很漂亮哇!但是对于小白不会搞呀

  3. 韩娱部落
    韩娱部落 【村长】 @回复

    VIP图看着很舒服

  4. 刘国栋博客
    刘国栋博客 【村长】 @回复

    这个vip看着真漂亮

  5. 森七
    森七 【队长】 @回复

    咱又来啦

  6. 明月登楼的博客
    明月登楼的博客 【总理】 @回复

    不错,很炫的功能!以后得多投稿!

  7. 小萝博客
    小萝博客 【市长】 @回复

    精神上鼓励一下

  8. 学史博客
    学史博客 【镇长】 @回复

    很不错的一个功能,有利于提高粘性。

  9. 雅兮网
    雅兮网 【省长】 @回复

    这个是干货,WordPress教程早已是炒冷饭,你这是新鲜的东西

  10. 焱鹏博客
    焱鹏博客 【农民】 @回复

    好牛逼!!赞一个

  11. 闲鱼
    闲鱼 【村长】 @回复

    确实要点个赞 [强]

  12. 靠谱学生兼职网
    靠谱学生兼职网 【镇长】 @回复

    看看前面,再看看后面的代码,哥头晕了

  13. 玩游戏赚钱
    玩游戏赚钱 【县长】 @回复

    感谢分享,很是不错的教程

  14. 龙笑天
    龙笑天 【县长】 @回复

    [礼物] 太棒了,非常感谢!

    • boke112导航
      boke112导航【站长】 @回复

      @龙笑天 [呲牙] 其实熟悉SQL语句的话,可以自行组合就可以得到很多我们想要的东西

  15. 橘子书
    橘子书 【镇长】 @回复

    还需借助插件来统计阅读数等数据,感觉教程不太通用。

    • 雅兮网
      雅兮网 【省长】 @回复

      @橘子书 那阅读数调取函数根据自己主题实际情况修改就可以了吧,很多主题自带浏览统计功能

      • 橘子书
        橘子书 【镇长】 @回复

        @雅兮网 [偷笑] 不一定每个人都知道自己的阅读数调用函数。感觉老古应该再细化细化,哈哈!

        • boke112导航
          boke112导航【站长】

          @橘子书 我还真没用过,我都是用插件的,所以只能靠自己了

    • boke112导航
      boke112导航【站长】 @回复

      @橘子书 [呲牙] 我比较喜欢用这个插件,用代码统计浏览数的话,万一换的主题没有这个功能,好像浏览数会不见的吧?具体也没有了解过

      • 橘子书
        橘子书 【镇长】 @回复

        @boke112导航 理论不会,因为现在大部分的主题,就算写统计功能,一般都会在自定义栏目留下Views,实在害怕不一样的话,就自己写一个或者检查一下函数里面统计代码是否写了相同的自定义栏目。它的原理就是调用Views的值而已。

      • 橘子书
        橘子书 【镇长】 @回复

        @boke112导航 觉得你应该将里面的sql语句再分析一下(分开阐述),比如某用户下所有文章浏览数的汇总、评论数的汇总查询方法等。。
        这样更方便其他人去自由组合,要不然你现在的教程,对于我们这些折腾习惯的人来说没啥难度,对于刚想学习的人来讲就有点眼瞎。

        • boke112导航
          boke112导航【站长】

          @橘子书 [流汗] 这个SQL感觉应该是最基本的了,想写成小白也会折腾的教程相当有难度。比如统计某个用户的相关信息,只需要将SQL中的那个用户ID改一下就行。PS:这种折腾教程还是比较适合有基础的博主折腾,完全小白的只能靠他们自己慢慢学习了。

  16. Koolight
    Koolight 【省长】 @回复

    折腾达人!

    • 我爱动感单车网
      我爱动感单车网 【省长】 @回复

      @Koolight [强] 老古这位好同志:不但爱折腾,还挺能折腾(想来这一点大家都早已经知道了,呵呵)!