Intereting Posts
Как удалить повторяющийся запрос на загрузку страницы или сделать их доступными для кэширования WP Redirect не работает Использовать основную тему CSS для внешней обертки в столбцах категории-списка? Как полностью избавиться от Категории в моем блоге? Отображать содержимое шаблона страницы (get_page) Изменение структуры постоянных ссылок для сообщений Как добавить пользовательский контент в пользовательскую таксономию Пользовательский запрос, просматривающий несколько настраиваемых полей и правильная сортировка Как отредактировать вложение с media-upload.php? Uncaught SyntaxError: Неожиданный токен Незаконный Пользовательский шаблон страницы с настраиваемыми полями Та же самая страница для начальной страницы и архива? wp_options, залитые переходным API, Как переопределить плагин темы p2 в файле шаблона контента? настроить страницу с ошибкой базы данных WordPress

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

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

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

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

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'] . Не делай этого.