Building the category.php I'm curious to know if there is a better way to get the count of posts without wp_query
? In the past I've called:
single_cat_title()
to render the categorycategory_description()
to render the category descriptionand to build a separator after each post but not the last on the page or last in get_option('posts_per_page')
I've used:
$category = get_queried_object();
$category_total = $category->count;
From research I did see How to get Total Post In a Selected category which was authored in 2011. wp_count_posts()
counts all posts in a blog which I dont think would be good on performance.
$category = get_category($id);
$count = $category->category_count;
From Count how many posts in category I think requires wp_query
? Is there a better way to get the count of posts in a category for category.php?
Building the category.php I'm curious to know if there is a better way to get the count of posts without wp_query
? In the past I've called:
single_cat_title()
to render the categorycategory_description()
to render the category descriptionand to build a separator after each post but not the last on the page or last in get_option('posts_per_page')
I've used:
$category = get_queried_object();
$category_total = $category->count;
From research I did see How to get Total Post In a Selected category which was authored in 2011. wp_count_posts()
counts all posts in a blog which I dont think would be good on performance.
$category = get_category($id);
$count = $category->category_count;
From Count how many posts in category I think requires wp_query
? Is there a better way to get the count of posts in a category for category.php?
What you've got is basically correct. This is the correct method for getting the total number of posts in the currnet category:
$category = get_queried_object();
$category_total = $category->count;
There shouldn't be any performance impact from using this, as the count
property is only updated when new posts are published, and doesn't need to be calculated each time it's used.
To get the number of posts on the current page though, get_option( 'posts_per_page' )
is not the best option, because it will be the incorrect number on the last page, which could have less than the total number of posts per page.
To get that number you need to check the global $wp_query
object:
global $wp_query;
$post_count = $wp_query->post_count;