WP_Query для пользовательского типа записи не отображается, множественные циклы и get_template_part
У меня возникли проблемы с отображением отзывов. В page.php у меня есть раздел с отзывами. У меня есть цикл, который получает контент для page.php, а затем get_template_part('content', 'testimonials') для получения цикла отзывов.
<div class="grid_12 omega clearfix">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h1><?php the_title(); ?></h1>
<p><?php the_content(); ?></p>
<hr>
<?php endwhile; else : ?>
<p>Записей не найдено :( </p>
<?php endif; ?>
</div>
<?php get_template_part( 'content', 'testimonials' ); ?>
Мой основной цикл выглядит как выше ^^. А цикл отзывов выглядит так в content-testimonials.php:
<?php
$args = array(
'post_type' => 'testimonials', // Тип записи - отзывы
'posts_per_page' => 1, // Количество отзывов на странице
'orderby' => 'rand' // Сортировка в случайном порядке
);
$the_query = new WP_Query( $args );
?>
<?php if ( have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="testimonial push_2 grid_10 clearfix">
<blockquote>“<?php the_field( 'testimonial' ); ?>”</blockquote>
<cite>—<?php the_field( 'name' ); ?></cite>
</div>
<?php endwhile; else : ?>
<p>Отзывов не найдено :( </p>
<?php endif; ?>
Я еще новичок в WordPress и не могу понять, что я упускаю. Я проверил админку, убедился, что отзывы есть, настроил пользовательские поля для отображения, если тип записи равен testimonial, но не понимаю, почему они не загружаются.
Буду благодарен за ваши ответы, спасибо заранее!
Кажется, вы забыли проверить, есть ли посты в $the_query.
<?php
$args = array(
'post_type' => 'testimonials', // Тип поста - отзывы
'posts_per_page' => 1, // Количество постов на странице
'orderby' => 'rand' // Сортировка в случайном порядке
);
$the_query = new WP_Query( $args ); // Создаем новый запрос
?>
<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="testimonial push_2 grid_10 clearfix">
<blockquote>“<?php the_field( 'testimonial' ); ?>”</blockquote>
<cite>—<?php the_field( 'name' ); ?></cite>
</div>
<?php endwhile; else : ?>
<p>Нет доступных отзывов :( </p>
<?php endif;
wp_reset_postdata(); // Сбрасываем данные поста
?>
И также не забудьте сбросить postdata, если на странице выполняется несколько запросов.

Прекрасно! Спасибо, дружище! Такая досадная ошибка, упустил самую простую вещь. Сработало как по волшебству!

Убедитесь, что вы также сбрасываете postdata после каждого запроса, если выполняете несколько запросов на странице, используя wp_reset_postdata();. Я обновил свой ответ с учетом этого.

@JakeGabb не забудьте принять этот ответ :-). Для информации ознакомьтесь со страницей [tour]

@JakeGabb О да, ограничения для новых пользователей, забыл об этом, извини. Кстати, добро пожаловать на WPSE.
