@olenne

Как правильно вывести два цикла wordpress на одной странице?

<?php
/*
Template Name: Home
*/
get_header();?>
<main role="main">
  <div class="container">
    <div class="grid">
    <?php
	$args = array(
        'type'     => 'post',
        'child_of' => 0,
        'orderby'  => 'ID',
        'order'    => 'ASC'
      );
      $cats = get_categories($args); 
	foreach ($cats as $cat) {
	$cat_id= $cat->term_id;
        echo '<div class="category-grid-item">';
	echo '<div class="category-image">' . get_term_thumbnail( $cat->term_taxonomy_id, $size = "category-thumb", $attr = "" ) . '</div>';
        echo '<div class="category-links"><h2>'.$cat->name.'</h2>';
	 query_posts("cat=$cat_id&posts_per_page=100");
	 if (have_posts()) : while (have_posts()) : the_post(); ?>
         <a href="<?php the_permalink();?>" class="category-link"><?php the_title(); ?></a>
	 <?php endwhile; endif; ?>
         <?php echo '</div></div>'; ?>
         <?php } ?>
    </div>

         <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
              <article class="entry-content"> 
                <div class="entry-content-inner">
                <h1 class="content-headline"><?php the_title(); ?></h1>
                 <?php the_content(); ?>
                <?php edit_post_link( __( '(Edit)', 'textdomain' ), '<p>', '</p>' ); ?>
                <?php endwhile; endif; ?>
                </div>
              </article>
  </div><!--end .container-->
</main>
<?php get_footer(); ?>

Не могу сообразить, как вывести контент на страницу и прощу помощи.
Страница поделена на два блока и имеет следующую структуру: в верхнем блоке выводятся карточки с названием рубрики, списком записей этой рубрики и изображением рубрики. Верх отображается как надо.
В нижнем блоке должен выводиться текст, набранный в редакторе страницы. Вместо этого отображается список записей последней рубрики из верхнего контейнера. Читала, что нужно использовать wp_reset_postdata(); и/или(?) wp_reset_query();, но пока не сильна в этом.
  • Вопрос задан
  • 597 просмотров
Решения вопроса 1
Попробуй так
<?php
$first_query = new WP_Query([
...
]);
?>
<?php while ( $first_query->have_posts() ) : $first_query->the_post(); ?>
	<?php the_title(); ?>
	<?php the_content(); ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>

<?php
$second_query = new WP_Query([
...
]);
?>
<?php while ( $second_query->have_posts() ) : $second_query->the_post(); ?>
	<?php the_title(); ?>
	<?php the_content(); ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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