web-dev-qa-db-ja.com

タイプと日付けでユーザーの投稿を数える

特定の投稿タイプでユーザー投稿を数えるには、 次のコード を使用します。

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' );

日付で投稿を制限するためのエレガントな解決策を探しています。たとえば、先週の月の投稿などです。

3
Rami

データベースから投稿を取得するためのエレガントな方法は、 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のドキュメントを読んでください。

2
cjbj