is_main_query

The timeline below displays how wordpress function is_main_query has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Determines whether the query is the main query.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @return bool Whether the query is the main query.
 */
function is_main_query()
{
    global $wp_query;
    if (!isset($wp_query)) {
        _doing_it_wrong(__FUNCTION__, __('Conditional query tags do not work before the query is run. Before then, they always return false.'), '6.1.0');
        return false;
    }
    if ('pre_get_posts' === current_filter()) {
        _doing_it_wrong(__FUNCTION__, sprintf(
            /* translators: 1: pre_get_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_get_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();
}

WordPress Version: 5.8

/**
 * Determines whether the query is the main query.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @return bool Whether the query is the main query.
 */
function is_main_query()
{
    global $wp_query;
    if ('pre_get_posts' === current_filter()) {
        _doing_it_wrong(__FUNCTION__, sprintf(
            /* translators: 1: pre_get_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_get_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();
}

WordPress Version: 5.7

/**
 * Determines whether the query is the main query.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @return bool Whether the query is the main query.
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_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_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://developer.wordpress.org/reference/functions/is_main_query/')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7.0');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 5.5

/**
 * Determines whether the query is the main query.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @return bool Whether the query is the main query.
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_posts, 2: WP_Query->is_main_query(), 3: is_main_query(), 4: Link to codex is_main_query() page. */
            __('In %1$s, use the %2$s method, not the %3$s function. See %4$s.'),
            '<code>pre_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://codex.wordpress.org/Function_Reference/is_main_query')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7.0');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 5.3

/**
 * Determines whether the query is the main query.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query WordPress Query object.
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_posts, 2: WP_Query->is_main_query(), 3: is_main_query(), 4: Link to codex is_main_query() page. */
            __('In %1$s, use the %2$s method, not the %3$s function. See %4$s.'),
            '<code>pre_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://codex.wordpress.org/Function_Reference/is_main_query')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7.0');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 5.1

/**
 * Determines whether the query is the main query.
 *
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/
 * Conditional Tags} article in the Theme Developer Handbook.
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query Global WP_Query instance.
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_posts 2: WP_Query->is_main_query() 3: is_main_query() 4: link to codex is_main_query() page. */
            __('In %1$s, use the %2$s method, not the %3$s function. See %4$s.'),
            '<code>pre_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://codex.wordpress.org/Function_Reference/is_main_query')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7.0');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 5.0

/**
 * Determines whether the query is the main query.
 * 
 * For more information on this and similar theme functions, check out
 * the {@link https://developer.wordpress.org/themes/basics/conditional-tags/ 
 * Conditional Tags} article in the Theme Developer Handbook.
 * 
 * @since 3.3.0
 *
 * @global WP_Query $wp_query Global WP_Query instance.
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_posts 2: WP_Query->is_main_query() 3: is_main_query() 4: link to codex is_main_query() page. */
            __('In %1$s, use the %2$s method, not the %3$s function. See %4$s.'),
            '<code>pre_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://codex.wordpress.org/Function_Reference/is_main_query')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7.0');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 4.6

/**
 * Is the query the main query?
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query Global WP_Query instance.
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_posts 2: WP_Query->is_main_query() 3: is_main_query() 4: link to codex is_main_query() page. */
            __('In %1$s, use the %2$s method, not the %3$s function. See %4$s.'),
            '<code>pre_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://codex.wordpress.org/Function_Reference/is_main_query')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7.0');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 4.4

/**
 * Is the query the main query?
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query Global WP_Query instance.
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(
            /* translators: 1: pre_get_posts 2: WP_Query->is_main_query() 3: is_main_query() 4: link to codex is_main_query() page. */
            __('In %1$s, use the %2$s method, not the %3$s function. See %4$s.'),
            '<code>pre_get_posts</code>',
            '<code>WP_Query->is_main_query()</code>',
            '<code>is_main_query()</code>',
            __('https://codex.wordpress.org/Function_Reference/is_main_query')
        );
        _doing_it_wrong(__FUNCTION__, $message, '3.7');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 4.3

/**
 * Is the query the main query?
 *
 * @since 3.3.0
 *
 * @global WP_Query $wp_query
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(__('In <code>%1$s</code>, use the <code>%2$s</code> method, not the <code>%3$s</code> function. See %4$s.'), 'pre_get_posts', 'WP_Query::is_main_query()', 'is_main_query()', __('https://codex.wordpress.org/Function_Reference/is_main_query'));
        _doing_it_wrong(__FUNCTION__, $message, '3.7');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 4.2

/**
 * Is the query the main query?
 *
 * @since 3.3.0
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(__('In <code>%1$s</code>, use the <code>%2$s</code> method, not the <code>%3$s</code> function. See %4$s.'), 'pre_get_posts', 'WP_Query::is_main_query()', 'is_main_query()', __('https://codex.wordpress.org/Function_Reference/is_main_query'));
        _doing_it_wrong(__FUNCTION__, $message, '3.7');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}

WordPress Version: 3.7

/**
 * Is the query the main query?
 *
 * @since 3.3.0
 *
 * @return bool
 */
function is_main_query()
{
    if ('pre_get_posts' === current_filter()) {
        $message = sprintf(__('In <code>%1$s</code>, use the <code>%2$s</code> method, not the <code>%3$s</code> function. See %4$s.'), 'pre_get_posts', 'WP_Query::is_main_query()', 'is_main_query()', __('http://codex.wordpress.org/Function_Reference/is_main_query'));
        _doing_it_wrong(__FUNCTION__, $message, '3.7');
    }
    global $wp_query;
    return $wp_query->is_main_query();
}