@UmniyParen

Как сделать так, чтобы после 2 «записи» выводился другой блок?

Всем привет!

Есть вот такой код:
<article>
 
 <?php
 $temp = $wp_query; $wp_query= null;
 $wp_query = new WP_Query(); $wp_query->query('showposts=5' . '&paged='.$paged);
 while ($wp_query->have_posts()) : $wp_query->the_post(); ?>

 <h2><a href="<?php the_permalink(); ?>" title="Read more"><?php the_title(); ?></a></h2>
 <?php the_excerpt(); ?>

 <?php endwhile; ?>

 <?php if ($paged > 1) { ?>

 <nav id="nav-posts">
     <div class="prev"><?php next_posts_link('&laquo; Previous Posts'); ?></div>
     <div class="next"><?php previous_posts_link('Newer Posts &raquo;'); ?></div>
 </nav>

 <?php } else { ?>

 <nav id="nav-posts">
     <div class="prev"><?php next_posts_link('&laquo; Previous Posts'); ?></div>
 </nav>

 <?php } ?>

 <?php wp_reset_postdata(); ?>

</article>


Выводит 5 последних новостей и навигацию по страницам.

Как можно сделать условие, чтобы после каждой 5 новости выводился блок с другой информацией?

Т.е. условно это выглядит так:
На главной странице выводится 5 записей и навигация. На каждой странице с записями после 2 записи должен выводиться 1 и тот же блок. Знаю, что можно сделать циклом, но не совсем понимаю как. Буду признателен, если подскажете
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
artzolin
@artzolin Куратор тега WordPress
php, WordPress разработка сайтов artzolin.ru
Ваш код работать не будет, функции next_posts_link() и previous_posts_link() работают только с глобальным запросом и не будут работать с кастомным WP_Query()

Если вас не устраивает ограничение на кол-во постов в настройках, вы можете изменить это значение для отдельных запросов на хуке pre_get_posts

add_action( 'pre_get_posts', 'wpz_home_pagesize', 1 );
function wpz_home_pagesize( $query ) {

	// Выходим, если это админ-панель или не основной запрос.
	if ( is_admin() || !$query->is_main_query() )
		return;

	// Выводим только 5 постов на главной странице
	if ( is_home() ) {
		$query->set( 'posts_per_page', 5 );
	}

}


Вывести блок с дополнительной информацией после каждого пятого поста можно с помощью простого счетчика

$i = 1;
while ( have_posts() ) :
	the_post();

	get_template_part( 'template-parts/content', get_post_format() );

	// после каждого пятого поста выводим баннер
	if ( is_int( $i++ / 5 ) ) {
		get_template_part( 'template-parts/content', 'offer' );
	}

endwhile;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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