is_main_query() WP 3.3.0

Перевіряє, чи в головному циклі WordPress виконується дія. Умовний тег.

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

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.0.2

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 метод, не є %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();
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *