J'utilise le code suivant pour compter les messages des utilisateurs par type de message:
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' );
Vous recherchez une solution élégante pour limiter les messages par dates. Par exemple, les messages de la semaine dernière\mois.
La manière élégante d’obtenir des publications de la base de données consiste à utiliser wp_query . Il a tous les filtres dont vous avez besoin:
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;
}
Il est également possible de renvoyer des plages de dates, en fonction de vos besoins. Lisez la documentation sur wp_query
pour cela.