17th Nov '22
/
7 comments

[Function] Current Term Has Children

Updated on 20 Jul 2024

A user asks:

I’m working on an archive template for WooCommerce products.

I’m trying to hide a section if there are no child categories but I cannot figure out how to set the conditions to do this.

Anyone else know what term or dynamic data to use to get this to work?

We can define a custom function that uses get_term_children() to return true or false, then use it with Bricks’ Dynamic data condition to render a Section (or any element) only if the current term has children.

Add this in child theme’s functions.php or a code snippets plugin:

// Function to check if the current term of the given taxonomy has children
function bl_current_term_has_children( $taxonomy = 'category' ) {
	$term_children = get_term_children( get_queried_object_id(), $taxonomy );

	return count( $term_children ) > 0;
}

get_queried_object_id() gets the ID of the current term when viewing a term archive page. Example URL:

https://bricks.local/product-category/clothing/accessories/

We have set category as the default argument for the function.

To check for a different taxonomy, product_cat in this case:

{echo:bl_current_term_has_children(product_cat)}

Whitelist the bl_current_term_has_children function.

Ex.:

<?php 

add_filter( 'bricks/code/echo_function_names', function() {
  return [
    'bl_current_term_has_children'
  ];
} );

You should also add other functions (native or custom) being used in your Bricks instance besides bl_current_term_has_children. This can be checked at Bricks → Settings → Custom code by clicking the Code review button.

More info on whitelisting can be found here.

Now the function is ready to be used in a term archive template like a template that applies to all WooCommerce product categories.

Apply a Dynamic data condition with the above dynamic data tag whilst checking it against being equal to 1.

Remember that 1 is true and 0 is false.

Reference

https://developer.wordpress.org/reference/functions/get_term_children/

Get access to all 630 Bricks code tutorials with BricksLabs Pro

7 comments

  • Matt CNC

    Thanks for sharing!

    Does it still work for you in 2024?

    I just tried it and the section I added the condition to is hidden on both categories with and without children :(

  • Thanks for sharing! I was looking for this particular solution.

    Does it still work for you in 2024?

    My product category has children but the moment I add the condition to bricks it hides my section with sub-categories anyway :(

  • David Demastus

    How would one do this inside of a query loop, instead of on an archive page? Like if I had a query loop on a standard page of my website. How do I check if the parent terms inside the query has children using bricks conditions?

  • Paco Castilla

    Sublime! Lo tenia hecho con código espagueti y esta función es super simple!! Me encanta!! Muchas gracias!

Leave a Reply to Matt (Cancel Reply)

 

Related Tutorials..

Pro
ACF Repeater sub field value dynamic data condition in Bricks

ACF Repeater sub field value dynamic data condition in Bricks

This Pro tutorial provides the steps to output an element on single posts (can be of any post type) only if a specified ACF (Pro)…
Pro
Conditional Rendering of ACF Repeater Rows Based on True / False Sub Field in Bricks

Conditional Rendering of ACF Repeater Rows Based on True / False Sub Field in Bricks

This Pro tutorial provides the steps to modify a ACF Repeater query loop to only output the rows for which a True / False type…
Categories:
Pro
City-based and Country-based Conditional Output in Bricks

City-based and Country-based Conditional Output in Bricks

This Pro tutorial provides the steps to render a Bricks element only if the visitor is from the specified country or city. Note: Caching may…
Categories:
Pro
Day of Week Condition in Bricks

Day of Week Condition in Bricks

Displaying elements conditionally based on the current day of the week.
Categories:
Condition for Checking Current Post Category in Bricks

Condition for Checking Current Post Category in Bricks

How we conditionally display an element based on the current post's categories.
Categories:
Pro
Condition to Check if the Current Category Has At Least One Child

Condition to Check if the Current Category Has At Least One Child

Looking to render an element in the category archive Bricks template only if the category of the current category archive page is a parent? This…
Categories:
Create A Customizable AJAX Add To Cart Button In Bricks Builder

Create A Customizable AJAX Add To Cart Button In Bricks Builder

In Bricks, you can simply create an Add To Cart button from a dynamic data / function {woo_add_to_cart}. This button supports AJAX as well if…
Is WooCommerce Cart Empty Condition in Bricks

Is WooCommerce Cart Empty Condition in Bricks

Updated on 5 Nov 2024 Looking to conditionally render an element depending on whether the user's cart is empty or not when using WooCommerce? Add…