is_main_query()
Перевіряє, чи в головному циклі WordPress виконується дія. Умовний тег.
Функцію потрібно використовувати лише усередині циклів, оскільки тег призначений визначення головного циклу WordPress.
1 раз – 0.000011 сек
(дуже швидко) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.0.14, WP 4.7
(дуже швидко) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.0.14, WP 4.7
Хуків немає.
Повертає
true|false.
Використання
if(is_main_query()) {...};Приклади
#1 Виконаємо код, тільки якщо це головний цикл:
if( is_main_query() ){
// Тут код, який потрібно виконати.
}#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() 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();
}