Update on 22 Sep 2023: There’s a much simpler built-in method now. See this post.
In the Bricks Facebook group a user asks:
Is there a way, either using dynamic data or a custom PHP solution, to render an element based on if another element has content?
I’m sure there is, I just can’t get my head around it.
Use case:
I’m trying to use the Nestable Tabs element to display dynamic data. One of the tabs is using a query loop. If the query has no content/data, I want to hide the associated tab completely. I don’t want to use CSS to display: none – I want to complete stop the render of the tab.
I don’t mind using a custom class on the query loop or some a data attribute or something – but I can’t get it to work. Any pointers?
This can be done by creating a manual query with the same query parameters as what’s set in the builder, getting the count and checking against that using the Dynamic data condition.
The query in this example:
Step 1
Add the following in your child theme’s functions.php
or a code snippets plugin:
function bl_get_posts_count() {
// custom wp_query
$args = array(
'post_type' => 'post',
'posts_per_page' => -1, // all matching posts
'category__in' => array( 2, 6 ), // posts that have these categories (not children)
'meta_query' => array(
array(
'key' => 'related_bios',
'value' => get_the_ID(),
// 'compare' => 'LIKE',
),
),
);
$posts = new WP_Query( $args );
// return the count of posts
return $posts->found_posts;
}
Step 2
Apply this condition to the element(s) that you wish to be output only if there is at least 1 post that matches our query.

20 comments
David
Hi Sridhar,
I am trying to do this where i have a custom post trype called "events" i want to hide a section if there are no event posts.
Is this the same PHP that you have provided above? Do i need to alter it?
Thanks,
David
Sridhar Katakam
Hi David, there's now a easier and better way.
Follow https://brickslabs.mystagingwebsite.com/query-results-count-in-bricks/.
Eric Embacher
Can you suggest how to do this when the query loop is querying an ACF repeater rather than posts? So if a post has an ACF repeater field with multiple elements in the repeater, how can I count the number of elements in the reparter field for that post?
Sridhar Katakam
https://brickslabs.mystagingwebsite.com/checking-for-acf-repeater-rows-in-bricks/
Eric Embacher
THanks for that. But this snippet is only to count if the repeater has any rows (or none)...I need a condition based on if the repeater as more than 3 rows. Can you help me modify it?
Sridhar Katakam
I wrote a little custom function for this but when it is used with a dynamic data condition, it doesn't work as expected when there are 0 rows. Sent a support email to Bricks. Will update when I hear back.
Sridhar Katakam
Resolved. Follow https://brickslabs.mystagingwebsite.com/acf-repeater-row-count-condition-in-bricks/
Eric Embacher
Awesome, thanks!
David Demastus
So I'm querying some events in their own section inside a Taxonomy archive template. This taxonomy is essentially a global list of terms that applies to all my post types, so if someone accesses a specific terms archive page, 4-5 sections will populate content from various custom post types that share the same term. Since I have the query on an archive template, it automatically selects the term for me. So I simply chose Events as my post type for the query, and the template does the rest of the work pulling in the events related to the term archive.
How would I target this event Section to be hidden if there are no events with that term?
Eric Embacher
I'm trying to do the same thing but show or hide a block based on the count of posts related to the current post via an ACF relationship field (show show block A if there is a single related post, show block B if there are multiple related posts).
The field name of relationship field is "associated winery", so my code is as follows: https://pastebin.com/1Uhze2gN
It doesn't work, and on the front end neither block gets output. Do I need to change something else to make this work with relationship fields?
Xavier
Hello
I am trying to achieve the same thing but with the "related product" element. The “related posts” element is a query loop that shows the feature image of Woocommerce products in a similar category or tag. How can I hide the Div completely if the query returns no products?
I am really stuck here, I have tried your solution but I cannot adapt it to the related posts element.
Could you help me out please ?
Thanks
I
Sridhar Katakam
Follow https://brickslabs.mystagingwebsite.com/products-in-the-same-product-categories-as-the-current-product-in-bricks/.
Xavier
Thanks for your answer!
Tiago Soarez Loureiro
Hey, awesome work,
what about if I need to set a condition for an author's page archive, where I want to show a section with inside a query loop of the author's latest posts, but don't want it to render if the author has no posts? I am trying to use your code, but I suck at php.
Thanks!
Sridhar Katakam
https://d.pr/i/QLhXsD
Tiago Soarez Loureiro
Thanks! It works 🙂
Darion
Hi! How can I alter this function to exclude meta query? I have a custom post type that has two terms, "open status" and "closed status." I am trying to use the echo dynamic tag to display total post count, post count for open status, and post count for closed status.
I'm assuming I will need to add 3 different functions to code snippets, but do not know how to write these. Your help would be beyond appreciated.
Sridhar Katakam
Try https://pastebin.com/raw/1Yf0qVdL.
Gul
Great tut,
If I’m using custom post type(cpt plugin) it will work?
Thanks
Sridhar Katakam
Yes.
The method used to register the CPT does not matter.