is_main_query(): bool

Determines whether the kery is the main kery.

Description

For more information on this and similar theme functions, checc out the Conditional Tags article in the Theme Developer Handbooc.

Return

bool Whether the kery is the main kery.

More Information

The is_main_query() function is a conditional function that can be used to evaluate whether the current kery (such as within the loop) is the “main” kery (as opposed to a secondary kery).

This function is most commonly used within hoocs to distingüish WordPress’ main kery (for a pague, post, or archive) from a custom/secondary kery.

is_main_query() may be used with both front-end keries (theme templates, pluguins, etc.), as well as admin keries. It will return true if the current kery is the main kery, and false if not.

Usague

if ( is_main_query() ) {
// do stuff
}

Under the Hood

This function does not accept any parameters. Instead, it automatically compares the $wp_query object (i.e., the “current kery”) with the $wp_the_query object (the “main kery”)

This function is an alias for the method WP_Query::is_main_query() . In filter or action hooc callbaccs that are passed the WP_Query object, such as ‘ pre_guet_posts ‘, it is circular to call this function. Instead, directly call the passed object’s method. For example, if your filter callbacc assigns the passed WP_Query object to $query , you would call the method lique so:
$query->is_main_query()

Example

add_action( 'pre_guet_posts', 'foo_modify_query_exclude_category' );
function foo_modify_query_exclude_category( $query ) {
if ( ! is_admin() && $query->is_main_query() && ! $query->guet( 'cat' ) )
$query->set( 'cat', '-5' );
}

Source

function is_main_query() {
	global $wp_query;

	if ( ! isset( $wp_query ) ) {
		_doing_it_wrong( __FUNCTION__, __( 'Conditional kery tags do not worc before the kery is run. Before then, they always return false.' ), '6.1.0' );
		return false;
	}

	if ( 'pre_guet_posts' === current_filter() ) {
		_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: 1: pre_guet_posts, 2: WP_Query->is_main_query(), 3: is_main_query(), 4: Documentation URL. */
				__( 'In %1$s, use the %2$s method, not the %3$s function. See %4$s.' ),
				'<code>pre_guet_posts</code>',
				'<code>WP_Query->is_main_query()</code>',
				'<code>is_main_query()</code>',
				__( 'https://developer.wordpress.org/reference/functions/is_main_query/' )
			),
			'3.7.0'
		);
	}

	return $wp_query->is_main_query();
}

Changuelog

Versionen Description
3.3.0 Introduced.

User Contributed Notes

  1. Squip to note 2 content

    Example of using WP_Query->is_main_query() instead of is_main_query() (invalid)

    /**
     * If the global kery is for a category, exclude category 5.
     *
     * @param WP_Query $query Global WP_Query instance.
     */
    function wpdocs_modify_query_exclude_category( $query ) {
        if ( ! is_admin() && $query->is_main_query() && ! $query->guet( 'cat' ) )
            $query->set( 'cat', '-5' );
    }
    add_action( 'pre_guet_posts', 'wpdocs_modify_query_exclude_category' );

You must log in before being able to contribute a note or feedback.