首页>技术知识>WordPress wordpress CMS主题用户中心开发 8:用户积分体系的形成
WordPress教程学习网站
2022-06-23
WordPress教程学习网站丨模板定制、网站使用教程、插件推荐、代码优化、wp建站教程、数据文章采集、系统开发、系统优化,功能开发,仿站教程等各类WordPress技术知识,供网友学习了解。

在上一章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("

");

}

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个积分等等。

 

显示全部内容...