WordPress как на ладони
rgbcode is looking for WordPress developers. eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

is_main_query()WP 3.3.0

Проверяет в главном ли цикле WordPress выполняется действие. Условный тег.

Функцию нужно использовать только внутри циклов, так как тег предназначен для определения главного цикла WordPress.

Работает на основе: WP_Query::is_main_query()
1 раз — 0.000011 сек (очень быстро) | 50000 раз — 0.01 сек (скорость света) | PHP 7.0.14, WP 4.7

Хуков нет.

Возвращает

true|false.

Использование

if( is_main_query() ){ ... };

Примеры

0

#1 Выполним код, только если это главный цикл:

if( is_main_query() ){
	 // здесь код который нужно выполнить.
}
0

#2 Как исключить категорию из основного цикла

Альтернативный пример, показывающий как изменить только основной цикл и исключить из него категорию 5. Разумеется исключать категорию 5 будем, только в том случае, если в запросе не указан параметр cat (напрямую не указана категория). Для этого мы будем использовать фильтр (хук) pre_get_posts:

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

Заметки

  • Global. WP_Query. $wp_query WordPress Query object.

Список изменений

С версии 3.3.0 Введена.

Код is_main_query() WP 6.6.2

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();
}
5 комментариев
    Войти