wordpress获取文章发布数量可以通过 wp_count_posts 和 count_user_posts 这两个函数去实现,但如果想要加入一些条件筛选,例如加入用户ID或者时间段,获取某个用户或某个时间段内的文章发布数量该如何实现呢?
通过SQL查询加入判断条件即可实现。
示例代码
// 获取用户每天发布的文章数量
function get_day_post_count($user_id){
global $wpdb;
$user_id = (int) $user_id;
return $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_status='publish' AND post_author = %d AND post_type= 'post' AND DATE_FORMAT(post_date, '%%Y-%%m-%%d') = %s",
array($user_id,date('Y-m-d', time()))
)
);
}
// 获取用户当月发布的文章数量
function get_month_post_count($user_id = ''){
global $wpdb;
$user_id = (int) $user_id;
return $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_status='publish' AND post_author = %d AND post_type= 'post' AND DATE_FORMAT(post_date, '%%Y-%%m') = %s",
array($user_id,date('Y-m', time()))
)
);
}
// 获取用户每天发布的文章数量
function get_day_post_count($user_id){
global $wpdb;
$user_id = (int) $user_id;
return $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_status='publish' AND post_author = %d AND post_type= 'post' AND DATE_FORMAT(post_date, '%%Y-%%m-%%d') = %s",
array($user_id,date('Y-m-d', time()))
)
);
}
// 获取用户当月发布的文章数量
function get_month_post_count($user_id = ''){
global $wpdb;
$user_id = (int) $user_id;
return $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_status='publish' AND post_author = %d AND post_type= 'post' AND DATE_FORMAT(post_date, '%%Y-%%m') = %s",
array($user_id,date('Y-m', time()))
)
);
}
上述代码放到 functions.php 中后,在任何页面直接使用即可,上面写了两个示例函数获取用户每月和每天的发布数量,如有别的需求,可以加入更多的条件获取,例如文章类型(post_type),文章状态(post_status)等。