开发 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 查询,对数据库负载多少会造成一些影响。为了提升性能,我们可以把这两个数据作为一个用户自定义字段存入数据中,每次用户发表文章或评论的时候更新一下这个数据。获取的时候直接使用 get_user_meta
获取这两个数据就可以了。