開發(fā) WordPress 用戶中心的時候,我們需要獲取 WordPress 站點中某用戶發(fā)表的文章數(shù)量和評論數(shù)量,因為這兩個數(shù)據(jù)使用的情況相對較少,WordPress 并沒有在數(shù)據(jù)庫中提供這樣的數(shù)據(jù)列,我們可以直接通過 SQL 查詢獲取這個數(shù)據(jù)。
獲取用戶發(fā)表的評論數(shù)量
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;
}
獲取用戶發(fā)表的文章數(shù)量
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 官方的一個函數(shù):
<?php $user_post_count = count_user_posts( $userid , $post_type ); ?>
上面的 SQL 查詢比較復(fù)雜,如果每次獲取文章數(shù)量和評論數(shù)量都要運行一下上面的兩個 SQL 查詢,對數(shù)據(jù)庫負(fù)載多少會造成一些影響。為了提升性能,我們可以把這兩個數(shù)據(jù)作為一個用戶自定義字段存入數(shù)據(jù)中,每次用戶發(fā)表文章或評論的時候更新一下這個數(shù)據(jù)。獲取的時候直接使用?get_user_meta 獲取這兩個數(shù)據(jù)就可以了。

