Languages: English • 日本語 Español • (Add your language)
The is_main_query()
function is a conditional function that can be used to evaluate whether the current query (such as within the loop) is the "main" query (as opposed to a secondary query).
This function is most commonly used within hooks to distinguish WordPress' main query (for a page, post, or archive) from a custom/secondary query.
is_main_query()
may be used with both front-end queries (theme templates, plugins, etc.), as well as admin queries. It will return true
if the current query is the main query, and false
if not.
<?php if ( is_main_query() ) { // do stuff }
This function does not accept any parameters. Instead, it automatically compares the $wp_query object (i.e., the "current query") with the $wp_the_query object (the "main query")
This function is an alias for the method WP_Query::is_main_query(). In filter or action hook callbacks that are passed the WP_Query object, such as 'pre_get_posts', it is circular to call this function. Instead, directly call the passed object's method. For example, if your filter callback assigns the passed WP_Query object to $query, you would call the method like so:
$query->is_main_query()
See the example below for usage in a conditional if statement.
add_action( 'pre_get_posts', 'foo_modify_query_exclude_category' ); function foo_modify_query_exclude_category( $query ) { if ( ! is_admin() && $query->is_main_query() && ! $query->get( 'cat' ) ) $query->set( 'cat', '-5' ); }
Since: 3.3
is_main_query() is located in wp-includes/query.php
, starting line 719.
WP_Query::is_main_query() is located in wp-includes/query.php
, starting line 3816.