Привет.
Вероятно я плохо гуглил/искал, но к так и не нашел ответа на мой вопрос.
Суть такова: в угоду оптимизации, хочу сделать так, чтобы к БД было как можно меньше запросов, и вот, что на данный момент я сделал.
Длинный код// Тут я начинаю "объединенный цикл"
<?php $news = new WP_Query( 'category_name=news&posts_per_page=4' );
if( $news->have_posts() ) : while( $news->have_posts() ) : $news->the_post(); ?>
<?php if( 0 == $news->current_post ) { ?>
<div id="post-<?php the_ID(); ?>" <?php post_class( 'first-news' ); ?>>
<div class="thumbnail">
<?php has_post_thumbnail() ? the_post_thumbnail( 'medium' ) : ssec_output_default_image(); ?>
</div>
<div class="content">
<p><a class="title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<p class="text"><?php echo esc_html( get_the_excerpt() ); ?></p>
<p><?php the_category(', '); ?> | <span class="text"><?php the_date(); ?></span></p>
</div>
</div>
<?php } else { ?>
<?php if( 1 == $news->current_post ) { echo '<div class="center-news">'; } ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="thumbnail">
<?php has_post_thumbnail() ? the_post_thumbnail( 'thumbnail' ) : ssec_output_default_image(); ?>
</div>
<div class="content">
<a class="title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<p><?php the_category(', '); ?> | <span class="text"><?php the_date(); ?></span></p>
</div>
</div>
<?php } endwhile; endif; if ( 1 < $news->post_count ) { echo '</div>'; } wp_reset_postdata(); ?>
// А тут, разочаровавшись, создаю новый цикл и пихаю в него условие offset
<?php $news = new WP_Query( 'category_name=news&posts_per_page=1&offset=4' );
if( $news->have_posts() ) : while( $news->have_posts() ) : $news->the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class( 'last-news' ); ?>>
<div class="thumbnail">
<?php has_post_thumbnail() ? the_post_thumbnail( 'medium' ) : ssec_output_default_image(); ?>
</div>
<div class="content">
<p><a class="title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<p class="text"><?php echo esc_html( get_the_excerpt() ); ?></p>
<p><?php the_category(', '); ?> | <span class="text"><?php the_date(); ?></span></p>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
Внимание, вопрос.
Мне нужно либо как то, еще раз попытаться взаимодействовать с
current_post и
post_count, либо копать в сторону
foreach( $posts as $post ) {}?
В итоге хочу получить 1 запрос WP_Query, 3 столбика с новостями (first-news, center-news, last-news).
Или есть куда проще варианты?
Или это вообще никак не повлияет на количество запросов к БД?
Подскажите пожалуйста.