Intereting Posts
Загрузка PDF-файла клиента (Каталог) – Автоматическое обновление ссылки в PDF-формате Как сохранить флажок в настраиваемом мета-окне для персонализированного типа сообщения, установленного по умолчанию для добавления нового сообщения? Как добавить шаблон в тему в WP Walker_Nav_Menu не работает в wp_page_menu_args filter Получение и вычисление значения среднего значения настраиваемых полей одного и того же тега CSS Изменения, потерянные функции мобильного телефона Как я могу понять, в чем причина смерти WP (белый экран)? Пользовательские поля не отображаются на моей странице блога Назначение меню администратора и подменю Создание собственного шаблона Безопасно ли вручную подписывать пользователя при использовании AJAX? WP Schedule Event – каждый день, когда приходит первый посетитель get_theme_mod (); ничего не возвращает как добавить # перед тегами? Экспорт / импорт базы данных WordPress

Как остановить цикл от повторения в шаблоне моей категории?

По какой-то причине при просмотре категории сообщения повторяются – в основном весь цикл повторяется столько раз, сколько сообщений для этой категории.

НАПРИМЕР:
Если category_a имеет 3 сообщения, страница отобразит:

post1 – Избранные
post2
post3

post1 – Избранные
post2
post3

post1 – Избранные
post2
post3

Если category_a имеет 4 сообщения, они будут отображаться:

post1 – Избранные
post2
post3
post4

post1 – Избранные
post2
post3
post4

post1 – Избранные
post2
post3
post4

post1 – Избранные
post2
post3
post4

Я использую тот же пост-шаблон ( content-feed.php ) для главной страницы блога и для страниц категорий. Он отлично работает на главной странице блога.

Я не уверен, имеет ли это значение или имеет какое-либо отношение к этой проблеме, но может быть примечательно: в цикле я сначала вытаскиваю «избранную» запись, а затем остальные сообщения («not-featured») ) ниже. Опять же – это очень хорошо работает на главной странице блога, эта проблема относится только к страницам категорий.

Вот весь пост-шаблон ( content-feed.php ):

 <div class="row"> <?php while (have_posts()) : the_post(); ?> <?php $args = array( 'posts_per_page' => 1, 'post_type' => 'post', 'order' => 'DESC', 'category__in' => ($cat), 'meta_query' => array( array( 'key' => 'is_featured', 'value' => '1', // only display the latest post marked featured, if there is one ) ) ); $first_query = new WP_Query( $args ); if ( $first_query->have_posts() ): echo '<div class="widget-box featured beige right">'; while( $first_query->have_posts() ) : $first_query->the_post(); $attachment_id = get_field('image'); $size = 'customfeatblg'; // (thumbnail, medium, large, full or custom size) $image = wp_get_attachment_image_src( $attachment_id, $size ); if( get_field('image') ): $thisimage = '<a href="' . get_permalink() . '"><img src="' . $image[0] . '" alt="' . get_the_title() .'" width="290" height="92" /></a>'; $divclass = 'summary'; else: $divclass = 'fullsummary'; endif; if( is_category() ): $category = strip_tags( single_term_title('',false) ); echo '<div class="title main fs-45">' . $category .'<span></span></div>'; else: $category = get_the_category(); echo '<div class="title main fs-45">' . $category[0]->cat_name .'<span></span></div>'; endif; ?> <?php echo ' ' . get_template_part('templates/social-shareing') .' <div class="the-content"> ' . $thisimage .' <div class="' . $divclass . '"> <h2 class="purple"><a href="' . get_permalink() . '">' . get_the_title() .'</a></h2> <p class="date">' . get_the_date() .'</p> <p>' . get_the_excerpt() . '&hellip; <br> <a href="' . get_permalink() . '">More &rsaquo;</a></p> </div> </div> '; endwhile; ?> <?php echo ' <div class="bottom-cap"></div> </div><!-- [END] widget-box -->'; endif; wp_reset_postdata(); // to reset the loop ?> <div class="feed med"> <?php $args = array( 'posts_per_page' => 10, 'post_type' => 'post', 'category__in' => ($cat), 'meta_query' => array( array( 'key' => 'is_featured', 'value' => '1', 'compare' => '!=', // only display posts not marked as featured - to prevent repeat from above ) ) ); $second_query = new WP_Query( $args ); if ( $second_query->have_posts() ): while( $second_query->have_posts() ) : $second_query->the_post(); $titlechars = 45; // Character Limit $posttitle = get_the_title(); $modtitle = substr($posttitle, 0, $titlechars); $contentchars = 120; // Character Limit $postcontent = get_the_excerpt(); $modcontent = substr($postcontent, 0, $contentchars); echo '<article>'; ?> <?php if( get_field('image') ): $attachment_id = get_field('image'); $size = 'customfeatins'; // (thumbnail, medium, large, full or custom size) $image = wp_get_attachment_image_src( $attachment_id, $size ); echo '<a href="' . get_permalink() . '"><img src="' . $image[0] . '" alt="' . get_the_title() .'" width="136" height="90" /></a>'; ?> <?php else : ?> <?php echo '<a href="' . get_permalink() . '"><img src="'. get_template_directory_uri() .'/assets/img/content/bf-default.gif" alt="bf-default" width="136" height="90" /></a>' ?> <?php endif; ?> <?php echo ' <h3 class="purple"><a href="' . get_permalink() . '">' . $modtitle .'</a></h3> <p class="date">' . get_the_date() .'</p> <p>' . $modcontent . '&hellip; <a href="' . get_permalink() . '">More &rsaquo;</a></p> </article>'; ?> <?php endwhile; endif; wp_reset_postdata(); // to reset the loop ?> </div><!-- [END] feed--> <?php/* <div class="pagination"><a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a><a href="#">&rsaquo;</a></div> */?> <?php global $wp_query; $big = 999999999; // need an unlikely integer echo paginate_links( array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages ) ); ?> </div><!-- [END] row --> <?php endwhile; ?> 

И вот мой шаблон category.php :

 <?php get_template_part('templates/nav', 'category'); ?> <?php get_template_part('templates/content', 'feed'); ?> <?php if (hchw_sidebar()) : ?> <?php get_template_part('templates/sidebar', 'right'); ?> <?php endif; ?> 

Я попытался добавить / переместить <?php wp_reset_query(); ?> <?php wp_reset_query(); ?> после <?php endwhile; ?> <?php endwhile; ?> в content-feed.php но это ничего не изменило.

Любые идеи о том, как исправить это или предотвратить его?

Заранее благодарю за любую помощь!

У вас три петли, две вложенные внутри основного цикла. Основной цикл отображает сообщения, например, в category_a . Что отображает второй вложенный цикл? Кажется, что эта петля также отображает сообщения из категории samne в качестве основного цикла. Поэтому попробуйте удалить второй вложенный цикл.

Ahhhh, благодаря помощи Ralf912 по устранению неполадок, я смог найти решение. Мне нужно было удалить «родительский» цикл – заменив <?php while (have_posts()) : the_post(); ?> <?php while (have_posts()) : the_post(); ?> с <?php if (have_posts()) : ?> и заменой закрывающего <?php endwhile; ?> <?php endwhile; ?> с <?php endif; ?> <?php endif; ?> исправил его.

В родительском цикле не было необходимости встраивать выделенные и неинтегрированные циклы.

Еще раз спасибо Ralf912!