Skip to content
Help Center
  • Pricing
  • ProductsExpand
    • Premium PlansGet all the tools you need in one plan
    • Kadence ThemeLightning-fast performance theme for modern websites
    • Kadence BlocksDrop in ready designs with advanced controls for pixel perfect websites
    • Kadence Shop KitCreate a more effective WooCommerce shopping experience
    • Kadence ConversionsBoost sales and build engaged audiences with popups and banners
    • Kadence InsightsEasily create A/B tests. Optimize your pages to drive higher conversions.
    • View All Products
    • Get Kadence + Hosting
      In One Place

      Enjoy faster setup, top-tier performance, and worry-free WordPress hosting – Kadence Theme, Kadence Blocks, and Solid Security all pre-installed.

      Learn More

  • Kadence AI
  • Starter Templates
  • Blog
  • SupportExpand
    • Resource HubStart here for guides, Product docs, FAQs, and Troubleshooting tips, all in one place.
    • Contact SupportStuck on something? We’re here to help! Open a ticket for top-notch support.
    • Contact Our TeamGot pre-sales questions or need help choosing a plan? Open a ticket and our team will guide you.
    • About usCrafted with love in Missoula, Montana. Meet the team behind the mission.
Account Account
Get Kadence
Kadence ai
Help Center
Kadence ai

Kadence AI

  • Kadence AI-Powered Design Library
  • Home
  • Knowledge Base
  • Kadence AI
  • Kadence Blocks
  • Advanced

Custom Queries for the Advanced Query Loop Block (Filter)

The Advanced Query Loop block (Kadence Blocks Pro) provides settings to create a custom query loop. However, sometimes, you need to alter the query beyond the capabilities of the Advanced Query Loop’s settings. In these cases, you can add a code snippet to alter the WordPress Query object. You can add PHP code to your site using a plugin like Code Snippets or your functions.php file (in a child theme).

If you want to modify the query arguments, you can make use of the ‘kadence_blocks_pro_query_loop_query_vars‘ filter. Here is an example that implements the filter.

Table of Contents
  • Examples
    • Returns posts dated December 12, 2012
    • Display posts where the custom field key is 'color' and the custom field value IS 'blue'
    • Display posts with 25 comments or more
    • Display posts that are not in a specific category
    • Display posts from multiple specific taxonomies and terms
    • Display posts from author
    • Show Related Posts for Custom Taxonomies
    • Show Only In-Stock WooCommerce Products
    • Show Only Woocommerce Products that are on sale
    • Enable Relevanssi Integration

Examples

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {
      $query['tax_query'] = array(
         array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => 'sub',
         )
      );
   }
   
   return $query;
}, 10, 3 );

In the above code, the $ql_id is set to 5283. This is the post ID of the specific query you want to target. If you don’t provide the conditional “if” statement to target a query ID, all of your queries will share the arguments, which isn’t ideal. Among other ways, you can find the $ql_id by navigating to Kadence Blocks > All Queries, hovering over the edit link of your desired query, and looking at the bottom left corner of your browser window. Be sure to change the ID to suit your needs.

Query Post ID

The example also uses the Simple Taxonomy Query provided by the WordPress Query documentation. Here are some additional examples that have been modified from the WordPress documentation.

Returns posts dated December 12, 2012

Source: https://developer.wordpress.org/reference/classes/wp_query/#date-parameters

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {


      $query['date_query'] = array(
         array(
            'year' => 2012,
            'month' => 12,
            'day' => 12,
         ),
      );
   }
   
   return $query;
}, 10, 3 );

Display posts where the custom field key is ‘color’ and the custom field value IS ‘blue’

Source: https://developer.wordpress.org/reference/classes/wp_query/#custom-field-post-meta-parameters

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {


      $query['meta_key'] = 'color';
      $query['meta_value'] = 'blue';
      $query['meta_compare'] = '=';
   }
   
   return $query;
}, 10, 3 );

Display posts with 25 comments or more

Source: https://developer.wordpress.org/reference/classes/wp_query/#comment-parameters.

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {
      $query['post_type'] = 'post';
      $query['comment_count'] = array(
         'value' => 1,
         'compare' => '>=',
      );
   }
   
   return $query;
}, 10, 3 );

Display posts that are not in a specific category

Source: https://developer.wordpress.org/reference/classes/wp_query/#category-parameters

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {
      $query['category__not_in'] = 5;
   }	
   
   return $query;
}, 10, 3 );

Display posts from multiple specific taxonomies and terms

Source: https://developer.wordpress.org/reference/classes/wp_query/#taxonomy-parameters

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {
      $query['tax_query'] = array(
         'relation' => 'AND', // Relation between taxonomies
         
         array(
            'taxonomy' => 'category',  // First taxonomy type
            'field'    => 'slug',
            'terms'    => 'a',         // Slug of the first taxonomy term
         ),

         array(
            'taxonomy' => 'category',  // Second taxonomy type
            'field'    => 'slug',
            'terms'    => 'fruit',     // Slug of the second taxonomy term
         ),
      );
   }

   return $query;
}, 10, 3 );

Display posts from author

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {
     // Replace 123 with the user ID you want to filter by
     $query['author'] = 123;
     // Or use author__in for multiple users:
     // $query['author__in'] = array( 123, 456 );
   }

   return $query;
}, 10, 3 );

Show Related Posts for Custom Taxonomies

The Advanced Query Loop block includes an option to Show Related Posts, which by default uses the standard post categories and tags to determine related content. If you’re working with a custom post type and/or a custom taxonomy, you can use the following snippet to modify the query and show related posts based on a specific taxonomy.

add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {

   if ( $ql_id == 5283 ) {
      $current_post_id = get_the_ID();

      // Get the taxonomy terms of the current page
      $terms = get_the_terms( $current_post_id, 'edownload' ); //Replace 'edownload' with your taxonomy term
		
	  // Ensure the terms are valid
      if ( $terms && ! is_wp_error( $terms ) ) {
         $term_slugs = wp_list_pluck( $terms, 'slug' );

      // Return the terms in the tax_query array
         $query['tax_query'] = array(
            array(
               'taxonomy' => 'edownload',  //Replace 'edownload' with your taxonomy term
               'field'    => 'slug',
               'terms'    => $term_slugs,
            ),
         );
      }
   }

   return $query;
}, 10, 3 );

Show Only In-Stock WooCommerce Products

By default, Adv Query Loop will display all products regardless of stock status. The following will modify the query so that it only shows in-stock products.

// Show only Products that are in-stock
add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {
	if ( $ql_id == 149879 ) {  // <-- change to your Query Loop ID
		$query['meta_query'] = array(
			array(
				'key'     => '_stock_status',
				'value'   => 'instock',
				'compare' => '=',
			),
		);
	}
	return $query;
}, 10, 3 );

Show Only Woocommerce Products that are on sale

// Show only Products that are on sale
add_filter( 'kadence_blocks_pro_query_loop_query_vars', function( $query, $ql_query_meta, $ql_id ) {
	if ( $ql_id == 149879 ) {  // <-- change to your Query Loop ID
	  // Get all product IDs on sale (WooCommerce core helper)
          $sale_ids = wc_get_product_ids_on_sale();

          if ( ! empty( $sale_ids ) ) {
              // Force using these IDs
              $query['post__in'] = $sale_ids;

              // Optionally, ensure it’s querying products
              $query['post_type'] = 'product';
          } else {
            // If no products on sale, force an empty result
            $query['post__in'] = [0];
          }
	}
	return $query;
}, 10, 3 );

Enable Relevanssi Integration

The text search feature for Adv Query Loop uses the native WordPress search function which only considers the post title and post content values. Additional details such as custom post meta values, categories, and tags are not included so native searches will not consider these additional fields. Relevanssi replaces the native WP search functionality and gives you greater control over your search results. To learn more about Relevanssi, see their plugin page or the official website.

Adding the following code snippet will enable the Kadence Advance Query Loop to use the Relevanssi search query for a specific Advanced Query Loop block:

add_filter('kadence_blocks_pro_query_loop_query_vars', function( $query_args, $ql_query_meta, $ql_id ){

     if ( $ql_id == 5283 && function_exists( 'relevanssi_do_query' ) && isset( $query_args['s'] ) ) {
          $query_args['relevanssi'] = true;
     }

     return $query_args; 
}, 10, 3);

Do you feel this document was helpful?
The Kadence WP Logo
Crafted in Missoula, Montana
  • Follow Kadence on Facebook
  • Follow Kadence on Youtube
  • X
  • Follow Kadence on Instagram
Trustpilot
Products
  • Kadence Plans
  • Kadence Theme
  • Kadence Blocks
  • Kadence AI
  • Kadence Starter Templates
  • Kadence Shop Kit
  • Kadence Conversions
  • Kadence Pattern Hub
  • View All
Resources
  • Blog
  • Podcast
  • Knowledgebase
  • Support ticket
  • Feature Requests
  • FAQ
  • WordPress Hosting Services
About Us
  • About Kadence
  • Become an affiliate
  • Contact us
  • Terms
  • Privacy Policy
  • Security
Our Partner Brands
  • SolidWP
  • LearnDash
  • The Events Calendar
  • GiveWP
  • MemberDash
Kadence Community
  • Kadence Marketplace
  • Join the Facebook Group
  • Subscribe to our YouTube Channel
© 2024 Kadence WP | All prices are in USD
Logo for StellarWP an umbrella brand of Premium WordPress plugins
  • Pricing
  • Products
    • Premium PlansGet all the tools you need in one plan
    • Kadence ThemeLightning-fast performance theme for modern websites
    • Kadence BlocksDrop in ready designs with advanced controls for pixel perfect websites
    • Kadence Shop KitCreate a more effective WooCommerce shopping experience
    • Kadence ConversionsBoost sales and build engaged audiences with popups and banners
    • Kadence InsightsEasily create A/B tests. Optimize your pages to drive higher conversions.
    • View All Products
    • Get Kadence + Hosting
      In One Place

      Enjoy faster setup, top-tier performance, and worry-free WordPress hosting – Kadence Theme, Kadence Blocks, and Solid Security all pre-installed.

      Learn More

  • Kadence AI
  • Starter Templates
  • Blog
  • Support
    • Resource HubStart here for guides, Product docs, FAQs, and Troubleshooting tips, all in one place.
    • Contact SupportStuck on something? We’re here to help! Open a ticket for top-notch support.
    • Contact Our TeamGot pre-sales questions or need help choosing a plan? Open a ticket and our team will guide you.
    • About usCrafted with love in Missoula, Montana. Meet the team behind the mission.
Account Login