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 ();
?>
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.