Intereting Posts
Список всех заголовков в категории с помощью functions.php wp-login redirect_to пропускает пробелы из параметров Переопределите другую часть цикла index.php. Почему слайд-шоу не показано в моей теме? Компактный список pingback с favicons Почему мой плагин требует перезагрузки постоянной ссылки после новой установки? Как удалить действие строки «Редактировать с помощью Visual Composer» в таблице списка сообщений? Есть ли способ (плагин?), Чтобы ограничить пользователя возможностью редактировать только одну страницу? Отключите панель администратора (панель инструментов) в бэкэнд – нет простого способа Пагинация в плагине с пользовательским типом сообщения Добавление кнопки загрузки мультимедиа на страницу профиля пользователя (в соответствии с руководством) Настроить текст рамки мультимедиа Несколько петель на одной странице, удаляющей теги Как фильтровать сообщения по категориям INSIDE loop Может ли кто-нибудь объяснить использование esc_html?

Что такое «основной запрос»?

Возможный дубликат:
Как узнать, какой из них является основным?

Мне любопытно узнать, что такое так называемый «основной запрос»?

У меня есть два запроса на первой странице.

if (have_posts()) : while (have_posts()) : the_post(); // do the main loop endwhile; endif; $posts = new WP_Query(array('post_type' => 'some_other_post_type')); while ($posts->have_posts()) : $posts->the_post(); // do the secondary loop // but still operating with the some_post_type endwhile; wp_reset_postdata(); 

И я хочу просто изменить основной запрос на мой пользовательский тип сообщения для повышения эффективности.

 add_action( 'pre_get_posts', 'some_name'); function some_name($query) { if (is_front_page() && is_main_query()) { $query->set( 'post_type', 'some_post_type' ); return; } } 

Я думал, что условие в этом крюке будет истинным только для первого цикла, но кажется, что через него проходит любой new WP_Query .

Можете ли вы объяснить мне, пожалуйста, что такое «основной запрос», а что нет?

PS: Я нашел почти аналогичный вопрос с решением для изменения запросов в pre_get_post помощью пользовательских запросов.

Solutions Collecting From Web of "Что такое «основной запрос»?"

У вашего фильтра есть ошибка, а именно, когда вы вызываете is_main_query, вы не проверяете, является ли переданный запрос основным запросом, проверяя, является ли текущий активный запрос основным запросом, который всегда будет правдой.

Поэтому вместо этого попробуйте следующее:

 add_action( 'pre_get_posts', 'some_name'); function some_name($query) { if ($query->is_front_page() && $query->is_main_query()) { $query->set( 'post_type', 'some_post_type' ); return; } } 

Основной запрос – это тот, который запускается автоматически, когда WordPress определил, что показывать для URI запроса.

Более поздние экземпляры WP_Query никогда не являются основным запросом, но вы можете использовать их для замены результата основного запроса в $GLOBALS['wp_the_query'] . Не делай этого.