5

NB : Faire une sauvegarde de votre thème, de votre fichier et/ou votre base de données avant d’ajouter ces fonctions tutoriels.

Obtenir le nombre d'articles / type d'articles par rôle utilisateur
Facile

---- Cet article a été modifié : 10 mai 2021

Nous allons dans ce tutoriel, développer des fonctions WordPress pour obtenir le nombre d’articles ou types d’articles par rôle d’utilisateur.
Dans notre exemple le rôle d’utilisateur est chroniqueur.
Si nous souhaitons ajouter un rôle utilisateur, il faudrait créér une petite fonction genre …

Il faut bien sur attribuer vos utilisateurs dans ce nouveau rôle WordPress si c’est nécessaire.

/**************************************** Add a new role Member ***********************************/

function themespress_role_partenaire() {  
    //add the new user role
    add_role(
        'chroniqueur',
        'Chroniqueur',
        array(
            'read'         => true,
            'delete_posts' => false
        )
    );
 
}
add_action('admin_init', 'themespress_role_partenaire');

Ensuite, nous souhaitons questionner la base de donnée en demandant combien de type de posts ou de post types correspondant à l’utilisateur.
Donc nous définissons dans notre fonction le rôle correspondant à nos utilisateurs. (Vous pouvez remplacer chroniqueurs par author, ect …)

Dans cette fonctions nous n’informons pas du paramètre post ou post type que l’on souhaite questionner. Mais on y stocke sa variable $post_type

function count_chahuts_by_author($post_type){
// Change here the user role
       $user_query = new WP_User_Query( array( 'role' => 'chroniqueur' ) );
	// Get the total number of users for the current query. I use (int) only for sanitize.
	$users_count = (int) $user_query->get_total();
	// Echo a string and the value
	return $users_count;
}

Maintenant, nous allons créer un shortcode qui va nous retourner la valeur de notre fonction précédente. Notre shortcode serait dans notre exemple : [chroniqueurchahutcount]

Dans notre exemple, notre shortcode nous retournera le résultat à savoir combien l’utilisateur a de post type chahuts correspondant à son rôle chroniqueur

/////////////////////////////////////// Shortcode count chahut ///////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////

function shortcode_chroniqueurs_count_chahut(){
$user_ID = get_current_user_id(); 
return count_chahuts_by_author($user_ID, 'chahuts');
}
add_shortcode('chroniqueurchahutcount', 'shortcode_chroniqueurs_count_chahut');

Insérer donc votre shortcode [chroniqueurchahutcount] dans votre page template ou dans une vue formidable form par exemple.

Attention ce tutoriel montre le résultat pour un utilisateur connecté correspondant à son user_id. (current_user).