• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > wordpress CMS主题制作 > wordpress CMS主题用户中心开发 8:用户积分体系的形成

    wordpress CMS主题用户中心开发 8:用户积分体系的形成

    作者: 分类:wordpress CMS主题制作 点击: 309 次
    wordpress CMS主题:ssmay主题

      在上一章wordpress CMS主题用户中心开发 7:author_write.php添加php处理代码 中,我们实现了用户在前台发表文章的功能。为了增加用户的粘性,以及实现wordpress CMS主题的其它一些需求,我们要为wordpress CMS主题添加用户积分体系,以此来体现用户在wordpress网站中的级别,对应相应的用户权限。

      此处,wordpress主题的用户积分由几个部分组成:发表文章获取积分、发表评论获取积分、第天限制前5篇文章可以获取积分、每天前10个评论可以获取积分。即:用户积分=发表文章数+评论数。下面,我们就来完成wordpress CMS主题的用户积分体系。

      第一步:每发表一篇文章增加积分

      这个要在我们写好的author_write.php文件的php处理代码中添加积分代码,就是在发表文章成功的时候,我们增加该用的积分,每发表成功1篇,就增加2个积分。并限制每天只有前5篇文章可以获取积分。代码如下:

      if ($status != 0){

      //插入tags标签
      wp_set_post_tags( $status, explode(",",$post_tags) );

      $num = get_today_posts($user_id);//获取今天发表文章的总数
      $author_write_num = 5; //后台设置 每天获积分几次,当然这里可以直接写一个数字

      if($num <= $author_write_num){ //在今天发表的前 5 篇文章,记录积分

      //发表成功,就记录一次当前用户的积分:积分=
      $jifens_add = 2; //发表成功,就加2个积分
      $jifen = get_user_meta($user_id,'user_jifen')[0] + $jifens_add;
      update_user_meta($user_id,'user_jifen',$jifen);

      }

      wp_die('文章发表成功!','文章发表成功!');

      }else{

      wp_die('文章发表失败!','文章发表失败!');

      }

      上面代码中的加粗的部分,就是我们添加的积分代码。

      第二步:添加获取当前发表的文章数。

      要想限制每天只有前5篇文章可以获取积分,就必须获取到每天所发表的文章数,在functions.php代码中添加如下代码:

      //获取今天作者发表的文章数
      function get_today_posts($uid,$post_type ='post') {

      global $wpdb;
      $date = date("Y-m-d",time());
      $sql = "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_status='publish' AND post_author={$uid} AND post_type='post' AND (DATE_FORMAT(post_date,'%Y-%m-%d') = '{$date}')";
      //return $sql;
      $numposts = $wpdb->get_var($sql);
      return $numposts;

      }

      第三步:每评论一次获取积分。

      这里,当用户每评论一次,就增加1个积分。并且限制每天只有前10个评论或以获取积分。在wordpress CMS主题的functions.php文件中添加如下代码:

      //每天前10次评论 给 积分
      function add_comment_difen( $commentdata ) {

      global $wpdb;
      $currentUser = wp_get_current_user();
      $uid = $currentUser->ID;
      $sql = "SELECT comment_date FROM {$wpdb->comments} WHERE user_id={$uid} ORDER BY comment_date DESC LIMIT 1";
      $last_post = $wpdb->get_var($sql);
      // 间隔120秒,才能再次评论
      if ( current_time('timestamp') - strtotime($last_post) < 120 ){

      wp_die("<script>alert('您评论也太勤快了吧,先歇会儿!'); history.back(); </script>");

      }

      if(!empty($currentUser->roles)) {

      $date = date("Y-m-d",time());
      $sql = "SELECT COUNT(comment_ID) FROM {$wpdb->comments}
      WHERE user_id={$uid} AND (DATE_FORMAT(comment_date,'%Y-%m-%d') = '{$date}')";
      $num = $wpdb->get_var($sql); //获取当前用户的评论次数

      $author_commen_num = get_option("swt_author_commen_num"); //后台设置 每天评论获几次积分
      if($num < $author_commen_num){ //如果当天评论次数 < 11

      $jifen = get_jefen($uid); //获取当前用户积分
      update_user_meta($uid,'user_jifen',$jifen+1); //

      }

            }
      return $commentdata;

      }
      add_action( 'preprocess_comment' , 'add_comment_difen', 20);

      通过上面的3步,我们的wordpress CMS主题基本上就完成了积分体系。当然,在后期,我们还可以为积分体系添加新的成员,如:推为精品文章可以获10个积分、获取点赞就增加1个积分等等。

       

    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201808116541.html
    本文时间:2018-08-11 07:03:16
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.