1

I'm overriding wpseo_title to make custom titles for my Woocommerce product categories.

Part of the titles are the number of products, based on $product_category->count

The only problem is that count of subcategory products isn't included. It's only the products in the category itself that are counted.

Is there a way to get the product count for the category itself + its subcategories?

1 Answer 1

2

WP_Query can be used to determine the number of posts contained within a category and its subcategories.

In the code below, set the terms parameter to whatever the parent category ID is. The include_children parameter ensures that WP_Query will include posts within subcategories.

We can then use $query->post_count to get the total number of posts in the parent category and its subcategories.

$query = new WP_Query( array(
    'tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'id',
            'terms' => 79, // Replace with the parent category ID
            'include_children' => true,
        ),
    ),
    'nopaging' => true,
    'fields' => 'ids',
) );

echo '<p>Total product count: <strong>' . esc_html( $query->post_count ) . '</strong></p>';
2
  • +1 but it probably flies way too high over the head of most readers ;) some explanation is probably needed Commented Feb 25, 2018 at 16:28
  • @MarkKaplun Good call on adding an explanation. All set! Commented Feb 25, 2018 at 20:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.