19th May '23
/
8 comments

Conditionally Outputting Elements only for Posts that have a Specific Taxonomy Term

A user asked:

I have a loop with some elements shown in a card.
Some items have the taxonomy “Bestseller”.
In the card I have a text with “Bestseller” that should be shown if taxonomy = “Bestseller”.
How can I do that ?

We can use the core WordPress has_term() function for checking if the current post has a specific term of a given taxonomy.

In this example, we shall work with a Bricks query loop in which the query type is set to Projects custom post type. This CPT has a corresponding Project Type taxonomy whose sample terms are Construction, Parks and Libraries.

Structure:

Now the objective is to display the last heading element only for the project items that are of Construction type.

For this we apply a Dynamic data condition on the Heading element like this:

{echo:has_term(construction,project-type)}

We are passing the term slug (name or ID can also be given) as the first argument for the has_term() function. The second argument is the taxonomy name.

Note: There should NOT be a comma between the two arguments.

Reference

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

Get access to all 633 Bricks code tutorials with BricksLabs Pro

8 comments

  • Maddalena Fasser

    Hello Sridhar, we could also use these dynamic data tags in the condition:

    Bricks, Free Dynamic Data {post_terms_your_taxonomy_slug:plain}

    Then set the operator to “contains” and specify the taxonomy term.

    Does it make sense? Thanks, as always, for your time and support!

    (As a side note, BrickExtras users should now find a Post Category condition that makes this even more convenient.)

    • Maddalena Fasser

      I’m not sure what happened, but it seems my comment included "Bricks, Free Dynamic Data" by mistake, as I didn’t write that part. 😅 I'll try again to write the dynamic data tags: Bricks, Free Dynamic Data {post_terms_your_taxonomy_slug:plain}

      • Maddalena Fasser

        Ok, I see, Bricks actually rendered the dynamic data tags in the comments! Here they are again (without curly braces to avoid rendering):

        post_terms_category:plain post_terms_post_tag:plain post_terms_your_taxonomy_slug:plain

  • Cheok Way Leong

    Hi, what if I wanna target all the taxonomies in "project-type" instead of just "construction". Would it be = 1 or > 0?

  • You say there should NOT be a comma between the two arguments, but your example does have a comma between them? Please clarify this.

Leave your comment

 

Related Tutorials..

Pro
Primary Term Name and Link in Bricks when using Rank Math

Primary Term Name and Link in Bricks when using Rank Math

One of the features of the Rank Math SEO plugin is the ability to mark a term like category or product category as primary. See…
Pro
Conditional Related Posts in Bricks

Conditional Related Posts in Bricks

How to output a section only if there is at least 1 related post for the current post being viewed.
Categories:
Month-based Background Image in Bricks

Month-based Background Image in Bricks

How to have different background images for an element for different quarters in a year.
Categories:
Pro
Showing a Popup conditionally in Bricks based on Query Parameter

Showing a Popup conditionally in Bricks based on Query Parameter

Here's two ways a Bricks Popup can be shown on page load depending on URL parameter value.
Categories:
Tags:
Render an element having a specific HTML ID based on value of a custom field

Render an element having a specific HTML ID based on value of a custom field

This tutorial provides the steps to use Bricks' bricks/element/render filter to conditionally output an element that has the specified HTML ID based on the value…
Categories: