@dariks

Почему стандартный цикл wordpress the_loop выводит страницы, а не записи?

Если вызвать цикл the_loop() на главной странице, или на странице блога то он выведет пустую карточку с названием страницы.
Если же вызвать этот цикл на странице категорий то он автоматически (без всякой фильтрации) выведет все записи с данной категории. Нашел для себя способ, перед циклом объявлять переменную WP_Query.
Но теперь, я решил создать страницу поиска. При использовании цикла с переменной WP_Query, результаты не выводятся, а без переменной, поиск работает, но опять выдает в результатах поиска еще и страницы помимо записей.
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
WP_Query - это не переменная это класс, а вы вызываете его экземпляр, вывязывая его на странице поиска, для вывода только записей, в него надо передать параметр 'post_type' => 'post'

а для модификации стандартного цикла на странице поиска надо сделать так

add_action( 'pre_get_posts', function( $query ) {

  if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
    $query->set( 'post_type', 'post');
  }

});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
На странице поиска уже есть основной цикл, дополнительный, с помощью WP_Query вызывать не нужно. И я советую смотреть как устроены шаблоны в дефолтных twenty темах, прежде чем что-то делать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы