How to display the number of articles published per user excluding users who do not publish articles. My message type is recipe. I would like to receive a code to get there in wp-query
thank you very much for your help

I give you a piece of code.
Thanks to this code I am able to display the total number of recipes, but I would have liked to have this:
User A posted 14 cooking recipes, User B posted 2 cooking recipes
ect..
user member1 should have 2 recipes

<?php
// 1. We define the arguments to define what we want to recover 
$args = array ( 'post_type' => 'recipe', 'posts_per_page' => '16', );

// 2. We run the WP Query 
// The Query 
$the_query = new WP_Query ($args);

// 3. we display the number of messages and the authors!
 // The Loop 
if ($the_query-> have_posts ()) {
 echo count_user_posts (2, $args); 
echo 'recipes for'; 
echo get_the_author (2, $args); 
echo '<br>'; 
echo count_user_posts (1, $args); 
echo 'recipes for';
 echo get_the_author (1, $args);

// 3. We launch the loop to display the articles and the authors! 
// The Loop 
echo '<ul>'; 
while ($the_query-> have_posts ()) ​{ 
$the_query-> the_post (); 
echo '<li>'. get_the_title (). '<li>'; 
echo '<li>'. get_the_author (). '<li>';
​}
​echo '<ul>';
​}
​else { 
// no posts found }
/ * Restore original Post Data * / 
wp_reset_postdata ();
​?>

        

    

enter image description here

2 Answers
2

If you have access to user IDs, you can use the count_user_posts() function.

You would get the number of posts by a user like this:

//Assume the variable $thisUser is equal to a valid user ID
$ThisUserCount = count_user_posts($thisUser, 'recipe');

EDIT:
Where you’re calling the count_user_posts() function, you’re passing it the array $args instead of the post type, ‘recipe’.

<?php
// 1. We define the arguments to define what we want to recover
$args = array (
    'post_type' => 'recipe',
    'posts_per_page' => '16',
);

// 2. We run the WP Query
// The Query
$the_query = new WP_Query ($args);

// 3. we display the number of messages and the authors!
// The Loop
if ($the_query-> have_posts()) {
    //Set arguments to grab all authors with published recipes, and order them by user ID
    $authorArgs = array(
        'orderby' => 'ID',
        'has_published_posts' => array('recipe'),
    );

    //Create an array of all authors with recipes published
    $recipeAuthors = get_users($authorArgs);

    //Loop through each recipe author
    foreach($recipeAuthors as $user){
        //Output user post count for recipes
        echo count_user_posts($user->ID, 'recipe');
        echo ' recipes for ';

        //Output user's display name
        echo $user->display_name;
        echo '<br />';
    }

    // 3. We launch the loop to display the articles and the authors!
    // The Loop
    echo '<ul>';
    while ($the_query-> have_posts()) {
        $the_query-> the_post();
        echo '<li>'. get_the_title(). '</li>';
        echo '<li>'. get_the_author(). '</li>';
    }
    echo '</ul>';
} else {
    // no posts found
}
wp_reset_postdata ();​?>

Also, your get_the_author(2,$args) function calls are not correct. get_the_author() does not accept any parameters anymore, and it only returns the Display Name of the author of the current post in the Loop.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *