Intereting Posts
Как добавить Редактировать | Удалить кнопку в строках? Search Console определяет данные разбивки по категориям как дублирующиеся мета-описания Пользовательские данные типа сообщений WP_Query несколько результатов публикации Создание формы для пользователя, чтобы добавить новый пользовательский пост с пользовательскими таксономиями и настраиваемыми полями Как получить мета-значение из WP_Query? Как получить относительный URL-адрес среднего размера изображения? Ключ comment_email, похоже, не работает для поля редактора комментариев Пользовательский параметр конечной точки WordPress Rest API Контекст плагина: направление искусства и супер кеш Использование таблицы стилей «Шрифт для замены тем»? Измените выход wp_nav_menu очень определенным образом? Пользовательский тип типа сообщения в слайдере Почему дома (много) медленнее, чем другие страницы? WooCommerce: не удается использовать wc_get_products для пользовательских конечных точек API REST

WordPress Loop: как отображать последние сообщения в нескольких divs

Я пишу новый файл шаблона. Я хочу отображать сообщения ретентатов из разных категорий в разных количествах в разных div, когда вы просматриваете домашнюю страницу.

Я написал оператор WP_Query, но каждый раз, когда я запускаю цикл, я не закрываю его. Следующий <div> после цикла всегда заканчивается показом внутри цикла.

В этом примере вы можете увидеть, что текст «последний» попадает в цикл. Если после этого вы добавите еще один div текста, это будет прекрасным.

Что мне не хватает?

Веб-сайт находится здесь:

тестовый сайт

Код, который я написал, это:

 <?php /* Template Name: Home News */ ?> <?php $sidebar = kloe_qodef_sidebar_layout(); ?> <?php get_header(); ?> <?php get_template_part( 'title' ); ?> <?php get_template_part('slider'); ?> <div id="container"> <?php $recent_posts_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 8, 'category_name' => 'technology', 'Fashion-Beauty', 'Art', 'Watches-Jewellery', 'Travel',)); while ($recent_posts_query->have_posts()){ $recent_posts_query->the_post(); ?> <div class="masonryImage"><?php the_post_thumbnail();?></div> <?php } ?> </div> <div class="advert-container"> <img src="http://img.wordpressask.com/posts/Home-Shop-Single-Image-1-1.png" alt="advert"> </div> <div class="text-header"> <h1>Editors Picks</h1> </div> <?php echo do_shortcode('[qodef_portfolio_slider type="fullscreen-slider" order_by="date" order="ASC" category_ID="251" speed="2000"]'); ?> <div class="text-header"> <h1>Fashion/Beauty</h1> </div> <div class="main-news"> <?php $the_query = new WP_Query(array('posts_per_page' => 3, 'category_name' => 'Fashion-Beauty' )); while ($the_query -> have_posts()) { $the_query -> the_post(); ?> <div class="new-content"> <div class="new-image"><?php the_post_thumbnail('full');?> <div class="new-content-excerpt"> <h5><?php foreach ((get_the_category()) as $category){ echo $category->cat_name . ' '; } ?> </h5> <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1> </div> </div> </div> <?php } ?> </div> <div class="text-header"> <h1>Latest</h1> </div> <div class="main-news"> <!-- Define our WP Query Parameters --> <?php $the_query = new WP_Query(array('posts_per_page' => 3, 'category_name' => 'technology' )); ?> <!-- Start our WP Query --> <?php while ($the_query -> have_posts()) { $the_query -> the_post(); ?> <div class="new-content"> <!-- Display the Post Image with Hyperlink --> <div class="new-image"><?php the_post_thumbnail('full');?></div> <div class="new-content-excerpt"> <!-- Display the Post Category Hyperlink --> <h5><?php foreach((get_the_category()) as $category) { echo $category->cat_name . ' '; } ?></h5> <!-- Display the Post Title with Hyperlink --> <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1> </div> </div> <!-- Repeat the process and reset once it hits the limit -- > <?php } ?> </div> </div> </div> </div> /* <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php if(($sidebar == 'default')||($sidebar == '')) : ?> <?php the_content(); ?> <?php do_action('kloe_qodef_page_after_content'); ?> <?php elseif($sidebar == 'sidebar-33-right' || $sidebar == 'sidebar-25-right'): ?> <div <?php echo kloe_qodef_sidebar_columns_class(); ?>> <div class="qodef-column1 qodef-content-left-from-sidebar"> <div class="qodef-column-inner"> <?php the_content(); ?> <?php do_action('kloe_qodef_page_after_content'); ?> </div> </div> <div class="qodef-column2"> <?php get_sidebar(); ?> </div> </div> <?php elseif($sidebar == 'sidebar-33-left' || $sidebar == 'sidebar-25-left'): ?> <div <?php echo kloe_qodef_sidebar_columns_class(); ?>> <div class="qodef-column1"> <?php get_sidebar(); ?> </div> <div class="qodef-column2 qodef-content-right-from-sidebar"> <div class="qodef-column-inner"> <?php the_content(); ?> <?php do_action('kloe_qodef_page_after_content'); ?> </div> </div> </div> <?php endif; ?> <?php endwhile; ?> <?php endif; ?>*/ <?php get_footer(); ?> <script type="text/javascript"> jQuery(window).load(function() { var container = document.querySelector('#container'); var msnry = new Masonry( container, { itemSelector: '.masonryImage', columnWidth: '.masonryImage', }); }); </script> 

Solutions Collecting From Web of "WordPress Loop: как отображать последние сообщения в нескольких divs"

Просмотрев код, я вижу пару вещей, которые могут вызывать проблемы.

  1. Комментарий отдельной строки «Повторить процесс …» не закрывается должным образом.

  2. Когда вы создаете несколько пользовательских циклов, рекомендуется сбросить петли. Вы можете сделать это, вызвав одну из следующих функций после каждого из ваших циклов while.

    wp_reset_postdata (); или wp_reset_query ();

Как указал Белинус, вы должны использовать wp_reset_postdata (); поскольку вы используете WP_Query.

Подробнее об этом можно узнать здесь: https://codex.wordpress.org/Function_Reference/wp_reset_postdata и здесь: https://codex.wordpress.org/Function_Reference/wp_reset_query

Надеюсь, что этой информации достаточно, чтобы все работало так, как вы хотите.