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

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

作者: 分类:wordpress CMS主题制作 点击: 11,889 次

    在上一章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个积分等等。

     



文章作者:码不停蹄
本文地址:https://wanlimm.com/77201808116541.html
版权所有 © 转载时必须以链接形式注明作者和原始出处!

上一篇:
下一篇:

或许你会感兴趣的文章:

6条回应:“wordpress CMS主题用户中心开发 8:用户积分体系的形成”

  1. avatar yanru说道:

    学习WP也是个大工程,总算找对地方了
    哈哈

  2. avatar test0007说道:

    我也想学习angular….

  3. avatar fthj说道:

    很有用,正在学习angular,谢谢!

  4. avatar fthj说道:

    很有用,刚好在学angular,谢谢哈!

  5. avatar fthj说道:

    很有用,刚好在学angular,谢谢!

  6. avatar yefan888说道:

    这个机制还不错,藏一个

发表评论

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

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