Intereting Posts
Переходные процессы не истекают, как ожидалось, в простой пользовательский плагин Отображение галереи NextGen с использованием значения из мета неработающего Моя настройка цвета фона не работает Параметр WP_Query post_parent всегда возвращает дочерние элементы текущей страницы Индекс в корне, wordpress в подкаталоге Как удалить фильтры из страницы администратора? Отключить SSL / HTTPS для wordpress Пользовательский тип сообщения – заголовок страницы архива ajax возвращает -1 в многодоменном субдомене Как удалить определенные категории по id на следующей странице content.php Правильный способ добавления редактора TinyMCE в обычную метатексту мета-поля? Таблица стилей не загружена на страницу регистрации Фильтр «parse_query» по-прежнему действителен для изменения фильтрованного содержимого в представлении списка администраторов? Два пользовательских типа сообщений с идентичными статьями, конкурирующими за один и тот же слизень Обновление полей пользовательских категорий

Петля первые шесть столбов в карусели, следующие восемь в сетке

На первой странице должны быть первые шесть столбов в карусели, а затем на следующей восьмерке в сетке. Какова наилучшая практика для цикла такого дизайна? В настоящее время я использую «get_posts» для вызова первых 14 сообщений, а затем вручную вызываю каждый из них после этого, но я решил, что должен быть лучший способ.

Вот что я делаю в начале index.php:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $offset = ($paged - 1) * 14; $args = array( 'numberposts' => 14, 'offset' => $offset, 'orderby' => 'date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish', 'suppress_filters' => true ); $front_page_posts = get_posts( $args ); 

Проблема в том, что я не могу назвать «get_template_part», потому что на самом деле нет цикла post, так что остальная часть моего кода выглядит примерно так:

 <div class="carousel"> <?php get_carousel_slide($front_page_posts[0]->ID, true); ?> <?php get_carousel_slide($front_page_posts[1]->ID); ?> <?php get_carousel_slide($front_page_posts[2]->ID); ?> <?php get_carousel_slide($front_page_posts[3]->ID); ?> <?php get_carousel_slide($front_page_posts[4]->ID); ?> <?php get_carousel_slide($front_page_posts[5]->ID); ?> </div> 

[…]

 <div class="grid"> <?php $count = 6; while($count < 14){ get_front_eighth($front_page_posts[$count]->ID); $count++; } ?> 

Как вы можете видеть, я должен вызвать отдельную функцию, чтобы получить шаблон вместо использования «get_template_part».

Итак, что лучше всего для этого?

Solutions Collecting From Web of "Петля первые шесть столбов в карусели, следующие восемь в сетке"

Используйте WP_Query со смещением, подобным этому

  <?php $offset = 6; $post_args = array( 'post_type' => 'post', 'posts_per_page' => $offset, ); $slider_blog_posts = new WP_Query( $post_args ); ?> <?php if ( $slider_blog_posts->have_posts() ): ?> <div class="carousel"> <?php while( $slider_blog_posts->have_posts() ): $slider_blog_posts->the_post(); ?> <?php get_carousel_slide( get_the_ID, true); ?> <?php endwhile; ?> </div> <?php endif; ?> <?php wp_reset_postdata(); ?> 

а затем создайте новый запрос для остальных сообщений:

  <?php $new_args = array( 'post_type' => 'post', 'posts_per_page' => 8, 'offset' => $offset ); $grid_blog_posts = new WP_Query( $new_args ); ?> <?php if ( $grid_blog_posts->have_posts() ): ?> <div class="grid"> <?php while( $grid_blog_posts->have_posts() ): $grid_blog_posts->the_post(); ?> <?php get_front_eighth( get_the_id() ); ?> <?php endwhile; ?> </div> <?php endif; ?> <?php wp_reset_postdata(); ?> 

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