开发WordPress用户中心的时候,我们需要获取WordPress站点中某用户发表的文章数量和评论数量,因为这两个数据使用的情况相对较少,WordPress并没有在数据库中提供这样的数据列,我们可以直接通过SQL查询获取这个数据。

获取用户发表的评论数量


function get_user_comments_count( $user_id ) {
	global $wpdb;
	$user_id = (int) $user_id;
	$sql     = "SELECT COUNT(*) FROM {$wpdb->comments} WHERE user_id='$user_id' AND comment_approved = 1";
	$coo     = $wpdb->get_var( $sql );
	return ( $coo ) ? $coo-1: 0;
}

获取用户发表的文章数量


function num_of_author_posts( $user_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;
}

或者直接用WordPress官方的一个函数:


<?php $user_post_count = count_user_posts( $userid , $post_type ); ?>

上面的SQL查询比较复杂,如果每次获取文章数量和评论数量都要运行一下上面的两个SQL查询,对数据库负载多少会造成一些影响。为了提升性能,我们可以把这两个数据作为一个用户自定义字段存入数据中,每次用户发表文章或评论的时候更新一下这个数据。获取的时候直接iiyh get_user_meta获取这两个数据就可以了。

瑞课支付