web-dev-qa-db-fra.com

Obtenez tous les auteurs avec au moins un post de 'type de post personnalisé'

Comment puis-je y arriver? J'ai trouvé count_user_posts et get_users , mais comment pourrais-je les fusionner pour obtenir le résultat souhaité? Dois-je vraiment utiliser une WP DB Query?

4
user9

Pour l'instant, la prise en charge de post_type n'est pas disponible pour count_user_posts(),

mettez donc le code ci-dessous dans le fichier functions.php du thème.

function count_user_posts_by_type( $userid, $post_type = 'post' ) {
    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 );
}

Maintenant, cette fonction prendrait user id et post_type en tant que paramètre post_type='post' étant le paramètre par défaut et obtient le nombre de publications pour cet utilisateur pour le type de message concerné.

Vous pouvez le vérifier en faisant écho au point ci-dessous, où vous devez vérifier le nombre de messages par l'utilisateur.

$user_posts = count_user_posts_by_type( 1, 'page' );
echo $user_posts; // This would return the post count for user id 1 and post_type page.

Vous pouvez faire la même chose pour le type de message personnalisé. Maintenant, vous devez obtenir les identifiants d’utilisateur, passer à travers cette fonction et afficher le nom des auteurs ayant au moins un message ou un message.

Vous pouvez ajouter le code ci-dessous à l'endroit où vous souhaitez afficher la liste des utilisateurs avec un ou plusieurs messages.

$blogusers = get_users();
foreach ( $blogusers as $user ) {
    if ( count_user_posts_by_type( $user->ID, 'post') ) {
         echo $user->user_nicename . '</br>';
    }
}

Le code ci-dessus répertorie tous les utilisateurs avec un ou plusieurs messages publiés de post_typepost.

2
Maruti Mohanty