相信很多朋友都见过这样一段话:“恭喜你,你的开机速度击溃了全国98%以上的电脑”,这个是360开机开机小助手的提醒,这个数字具体是怎么计算出来的,恐怕只有开发这个小助手的人知道。很简单的一个功能,却对提升用户黏度,活跃用户参与度起到了很大的作用。在社交网站上,能不能也加上一个类似的功能呢?当然是可以的,今天要给大家介绍的就是一个根据用户发表的文章数量计算用户在网站中百分比排名的功能。

获取用户发表的文章数量


/* 获取用户发表的文章数量 */
 function num_of_author_posts( $user_id ){ //根据作者ID获取该作者的文章数量
    global $wpdb;
    $user_id = (int) $user_id;
    $sql = "SELECT COUNT(*) FROM {$wpdb->posts} WHERE post_author='$user_id' AND post_status = 'publish' ";
    $coo = $wpdb->get_var( $sql );
    return ( $coo ) ? $coo: 0;
 }

根据用户所发表的文章数量,计算用户的百分比排名


/*get user post number sort*/
function get_user_sort( $user_id ){

	/*获取所有用户*/
	$users = get_users( array( 'fields' => 'ID') );

	$user_post_num = array();
	foreach ($users as $user) {
		$user_posts = num_of_author_posts($user);
		$user_post_num[next($users)] = $user_posts;
	}

	/* 获取当前用户的文章数量 */
	$current_user_posts = num_of_author_posts( $user_id );

	/*根据文章数量排列用户数组*/
	sort($user_post_num);
	$sort = array_search( $current_user_posts, $user_post_num ); /*user sort*/

	$percent_sort = round( ( ( $sort / (count( $user_post_num ) - 1) ) * 100 ), 0) . '%';
	return $percent_sort;
}

严格意义上来讲,这个数据并不准确,事实上,我们也不需要这个用户太准确,只要给用户一个大概的数据,在用户发表文章的时候,这个数字会变化就行了,做到这一点,就能起到鼓励用户,增加活跃度的作用了。关于这个功能,如果你有更好的想法,欢迎通过评论和大家交流。