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(); }