facetwp_is_main_query
Overview
This filter is only relevant for the CSS-based template approach. This hook is useful if FacetWP is unable to auto-detect the correct query (such as when there’s a custom query on a page).
Parameters
- $is_main_query | boolean | Whether FacetWP should use the current query
- $query | object | The WP_Query object
How it works
When using the CSS-based template approach, FacetWP will automatically try to find the right query. FacetWP uses this logic to determine whether a query should be used:
$is_main_query = ( $query->is_archive || $query->is_search || ( $query->is_main_query() && ! $query->is_singular ) );
FacetWP uses the first query that matches the above criteria. While this works great most of the time, we understand that this won’t work 100% of the time with all themes. This hook is useful when the above logic isn’t sufficient.
Forcing a custom query
Let’s say we have a custom WP_Query on a page that FacetWP isn’t able to auto-detect.
$args = [ 'post_type' => 'event', 'posts_per_page' => 10, 'facetwp' => true, // we added this ]; $query = new WP_Query( $args );
By setting the “facetwp” argument (see above), FacetWP will use the query for filtering unless another query has already been chosen.
Usage
This example tells FacetWP to ignore queries with post_type set to tribe_events
:
add_filter( 'facetwp_is_main_query', function( $is_main_query, $query ) { if ( 'tribe_events' == $query->get( 'post_type' ) ) { $is_main_query = false; } return $is_main_query; }, 10, 2 );
IMPORTANT: Generally, custom queries should not be used in archive templates (such as post type archives, taxonomy archives, etc) to replace WP’s default archive query. We recommend modifying the existing query with a pre_get_posts filter if needed.