@Cobra8106

Как вывести 2 последних поста (с сортировой по дате) с разными стилями?

Ситуация такая - на странице выводится два поста, друг за другом. Каждый пост имеет текст и картинку. Структура первого поста - слева картинка, справа - текст. Структура второго поста - наоборот.
Обычно используют такой метод или подобный ему:
<?php $catquery = new WP_Query( 'cat=4&posts_per_page=2' ); ?>
 <?php while($catquery->have_posts()) : $catquery->the_post(); ?>
...<div> item-content </div> ...
<?php endwhile;
wp_reset_postdata();?>


Но такой вариант подойдет например для последнего поста. А как в этом случае вывести предпоследний пост?
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
@Cobra8106 Автор вопроса
Есть такое решение:
- Выводим последний пост
<?php
     $args = array( 'posts_per_page' => 1, 'category' => 4 );
     $lastpost = get_posts( $args );

     foreach( $lastpost as $post ){
     setup_postdata($post);
?>

...<div> item-content </div> ...

<?php the_post_thumbnail(); ?>


- Выводим предпоследний пост
<?php 
      $args = array( 'numberposts' => 1, 'offset' => 1, 'category' => 4 );
      $penultimate = get_posts( $args );

       foreach( $penultimate as $post ){
       setup_postdata($post);
 ?>

...<div> item-content </div> ...

<?php } wp_reset_postdata(); ?>


Возможно кому-то понадобится.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Есть решение гораздо лучше - выводить разные шаблоны для четных и нечетных постов

// функция проверки на четность числа
function is_int_even( $var ) {
	return !( (int) $var & 1 );
}


foreach ( $post as $key => $post ) {
	if ( is_int_even( $key ) ) {
		// выводим шаблон для четных постов
	} else {
		// выводим шаблон для НЕчетных постов
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы