WordPress 用户中心开发获取某用户发表的文章数量和评论数量

文 / @WordPress主题

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";
	$count = $wpdb->get_var($sql);
	return ($count) ? $count-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'";
	$count = $wpdb->get_var($sql);
	return ($count) ? $count : 0;
}

另外,WordPress官方也提供了一个函数来直接获取用户发表的文章数量:

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

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

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。