Intereting Posts
Получить название сообщения без использования the_title (); Цикл Foreach не работает должным образом – пользовательские таблицы и ссылки при отправке формы Условное меню для зарегистрированных пользователей / гостей (система Genesis) Навигатор содержимого статьи в WordPress, как веб-сайт mbaskool Можно ли создавать прогрессивные миниатюры JPEG? Одноразовый вход в систему HELP Как отобразить Самые последние прочитанные 10 Сообщений пользователем, зарегистрированным в WordPress Создание форумов с настраиваемыми типами сообщений Файл WordPress .htaccess дает проблемы с подкаталогом Можем ли мы использовать одну установку WordPress для нескольких баз данных, доменов и каталогов контента Лучший способ переместить сайт в подпапку для целей тестирования? Отобразить форму сообщения об ошибке admin_notice jQuery Аутентификация WordPress без функции WordPress Включая стороннюю библиотеку в WordPress, которая должна быть доступна с помощью wp-config wp_query добавлять аргументы, используя array_push, если переменная встречается

Два разных запроса на странице архива

(Запросы окончательно являются бесконечным источником недоразумений …)

Я пытаюсь отобразить два типа информации в налоговом архиве ( taxonomy-artiste.php ):

  1. Содержимое страницы из пользовательского сообщения (био)
  2. И после, список сообщений из другого пользовательского сообщения (работает)

Если бы я хорошо понял, было бы интересно использовать pre_get_post для изменения основного запроса. Итак, я установил это в моей function.php .

 // Включите все мои CPT, но
 функция lm_exclude_bio ($ query) {
   if (is_tax ('artiste') && empty ($ query-> query_vars ['suppress_filters'])) {
     $ query-> set ('post_type', array (
      'post', 'cpt # 1', 'cpt # 2'
         ));
       return $ query;
     }
 }
 add_filter ('pre_get_posts', 'lm_exclude_bio');

Хорошо, это работает.

Но, когда я добавляю новый запрос в этот архив, он не отображает сообщение, которое я исключил …

 $ args = array ('post_type' => 'bio', 'posts_per_page' => 1);
 // Мой второй запрос для CPT 'bio'
 $ bio_query = новый WP_Query ($ args);

 // Петля
 if ($ bio_query-> has_posts ()) {
     while ($ the_query-> have_posts ()) {
         $ Bio_query-> the_post ();
         // пожалуйста, мой пользовательский пост 'bio'! ...
     }
     / * Восстановить исходные данные * /
     wp_reset_postdata ();
 } else {
     // Сообщений не найдено
 ?>

Разве невозможно (глупо?) Задавать два запроса с противоположными аргументами? Спасибо за любую помощь!

Solutions Collecting From Web of "Два разных запроса на странице архива"

Вы добавили фильтр lm_exclude_bio в pre_get_posts . Поэтому, когда вам нужно запустить другой запрос, вы можете удалить фильтр, чтобы получить обычный запрос. Вы можете удалить фильтр, как показано ниже,

 // Here we're removing the filter first. Then we are running the query. remove_filter( 'pre_get_posts', 'lm_exclude_bio' ); $args = array( 'post_type' => 'bio', 'posts_per_page' => 1 ); // My second query for CPT 'bio' $bio_query = new WP_Query( $args ); // The Loop if ( $bio_query->have_posts() ) { while ( $bio_query->have_posts() ) { $bio_query->the_post(); // please, my custom post 'bio' !... } /* Restore original Post Data */ wp_reset_postdata(); } else { // no posts found } ?> 

Также во while ( $the_query->have_posts() ) вы получили ошибку в $the_query . Это будет $bio_query . Я исправил ошибку в моем вышеприведенном коде.

Надеюсь, поможет.

Хорошо, прежде всего, я обнаружил, что вводил в заблуждение код, проверяя часть, в которой я исправил:

 // The Loop if ( $bio_query->have_posts() ) { while ( $bio_query->have_posts() ) { $bio_query->the_post(); // please, my custom post 'bio' !... } /* Restore original Post Data */ wp_reset_postdata(); } else { // no posts found ?> 

НО Я думаю, что вы возитесь с запросами, потому что вы используете два разных способа атаки базы данных WP. В вашей первой части кода (думаю, вы помещаете ее в свой файл functions.php ), вы taxonomy-artiste.php объекту «основного запроса», но, похоже, вы никогда не используете его в вашем файле taxonomy-artiste.php . Я предлагаю сделать что-то вроде этого:

 <?php // Taxonomy-artiste.php /* * The content of a page from a custom post (bio) */ $args = array( 'post_type' => 'bio', 'posts_per_page' => 1 ); $bio_query = new WP_Query( $args ); // The Loop if ( $bio_query->have_posts() ) { while ( $bio_query->have_posts() ) { $bio_query->the_post(); the_content() // This will print the content of your bio post, stored in the global $post variable } /* Restore original Post Data */ wp_reset_postdata(); } else { // no posts found } /* * And after, a list of post from another custom post */ $args = array( 'post_type' => '#cpt1', 'posts_per_page' => 'put here the number of #cpt1 you want to load' ); $other_query = new WP_Query( $args ); // The Loop if ( $other_query->have_posts() ) { while ( $other_query->have_posts() ) { $other_query->the_post(); the_content() // This will print the content of your other posts, stored in the global $post variable } /* Restore original Post Data */ wp_reset_postdata(); } else { // no posts found } ?> 

Надеюсь, это поможет вам.