特定の投稿タイプでユーザー投稿を数えるには、 次のコード を使用します。
function count_user_posts_by_type( $userid, $post_type ) {
global $wpdb;
$where = get_posts_by_author_sql( $post_type, TRUE, $userid );
$count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts $where" );
return apply_filters( 'get_usernumposts', $count, $userid );
}
// Echo Count
echo count_user_posts_by_type( $user_ID, 'reports' );
日付で投稿を制限するためのエレガントな解決策を探しています。たとえば、先週の月の投稿などです。
データベースから投稿を取得するためのエレガントな方法は、 wp_query を使用することです。それはあなたが必要とするすべてのフィルタを持っています:
function wpse70323_count_user_posts_by_type( $userid, $post_type, $year, $month, $day ) {
$query = new WP_Query( array(
'author' => $userid,
'post_type' => $post_type,
'date_query' => array(
array(
'year' => $year,
'month' => $month,
'day' => $day,
),
),
'posts_per_page' => -1,
));
$count = $query->post_count;
return $count;
}
必要に応じて、日付の範囲を返すこともできます。それについてはwp_query
のドキュメントを読んでください。