Все привет.
Делаю нестандартный вывод постов вот такой плиткой -
клик.
Написал вывод таким образом:
$number = 15;
$offset = 4;
// Первый набор статей
$q1 = new WP_Query(array( 'posts_per_page' => $offset ));
echo '<div class="Stripe">';
if( $q1->have_posts() ):
$i = 0;
while ( $q1->have_posts() ) :
$i++;
if( 1 == $i ){
echo '<div class="Stripe-col__single">';
$q1->the_post();
the_title();
echo '</div>';
}
else{
echo '<div class="Stripe-col__vertical-triple">';
for ($j=0; $j < $offset - 1 ; $j++){
$q1->the_post();
echo '<div class="Stripe-col__full">';
the_title();
echo "</div>";
}
echo '</div>';
}
endwhile;
endif;
echo '</div>';
wp_reset_query();
// Второй набор статей
$q2 = new WP_Query(array(
'posts_per_page' => $number - $offset,
'offset' => $offset
));
if ( $q2->have_posts() ) {
while ( $q2->have_posts() ) {
$count_row = ceil(($number - $offset) / 2.5);
for ($i=0; $i < $count_row; $i++) {
echo '<div class="Stripe">';
if( $i % 2 == 0 ){
for ($c=0; $c < 2 ; $c++) {
$q2->the_post();
if ( get_the_title() !== '') {
echo '<div class="Stripe-col__double">';
the_title();
echo '</div>';
}
}
}
else{
for ($n=0; $n < 3; $n++) {
$q2->the_post();
if ( get_the_title() !== '') {
echo '<div class="Stripe-col__horizontal-triple">';
the_title();
echo '</div>';
}
}
}
echo '</div>';
}
}
}
Я решил использовать два экземпляра WP_Query. Первый - для первых четырех записей, и второй - для всех остальных.
В принципе, этот код решает мою задачу и выводит все как нужно, но, кажется, что он слишком замудренный, и возможно, все это дело можно упростить. Или упростить хотя бы часть кода.
Например, не нравятся вот такие повторяющиеся моменты:
$q2->the_post();
if ( get_the_title() !== '') {
echo '<div class="Stripe-col__horizontal-triple">';
the_title();
echo '</div>';
}
Подскажите пожалуйста, как это возможно сделать?
P. S. вместо the_title() будет подгружаться шаблон одной записи.