A client of mine had to style a WooCommerce product category page but ONLY if it was a subcategory. So I decided to add a “subcategory” class to the HTML body, so that they could target this in their custom CSS.
As usual, the PHP is quite easy: I check if the current page is a product category, then if the category has “parents” – and only in this case – add a body class. Pretty easy!

PHP Snippet 1: Add Body Class if Current Page is a Subcategory – WooCommerce
/**
* @snippet Add "Subcategory" Class to HTML Body
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @compatible WooCommerce 5
* @donate $9 https://tutoraspire.com
*/
add_filter( 'body_class', 'tutoraspire_wc_product_cats_css_body_class' );
function tutoraspire_wc_product_cats_css_body_class( $classes ){
if ( is_tax( 'product_cat' ) ) {
$cat = get_queried_object();
if ( $cat->parent > 0 ) $classes[] = 'subcategory';
}
return $classes;
}
PHP Snippet 2: Detect if Current Subcategory Page Belongs To a Specific Parent Category – WooCommerce
As you can see inside the first snippet, there is a way to find out if the current object (a product category in this case) has a parent. You can apply the same method for other conditional work.
In this case study, however, I want to check if the subcategory ID is a child of a specific product category ID, so that I can run PHP only if this condition is met.
/**
* @snippet Check If Subcategory is Child Of Category ID
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @compatible WooCommerce 5
* @donate $9 https://tutoraspire.com
*/
$cat = get_queried_object();
if ( $cat->parent === 456 ) {
// do something if parent term id is 456
}
PHP Snippet 3: Detect if Current Subcategory Page Belongs To a Specific Ancestor Category – WooCommerce
Not only you can detect if a subcategory belongs to a parent category, but also grandparent, great grandparents and so on…
/**
* @snippet Check If Subcategory Has Category ID Ancestor
* @how-to Get tutoraspire.com FREE
* @author Tutor Aspire
* @compatible WooCommerce 5
* @donate $9 https://tutoraspire.com
*/
$cat_id = get_queried_object_id();
$ancestors = get_ancestors( $cat_id, 'product_cat' );
if ( in_array( 456, $ancestors ) ) {
// do something if term id 456 is an ancestor
}