Если вам удобнее с массивами, вы всегда можете использовать функцию get_posts()
, которая принимает аргументы (почти) точно так же, как класс WP_Query()
, get_posts()
на самом деле также использует WP_Query
.
Тем не менее, ваш код будет не так сложно изменить с помощью "native PHP", как вы упомянули. Это просто while
l oop вместо foreach
l oop, оба из которых являются похожими управляющими структурами.
Все, что у вас есть Для этого нужно добавить переменную счетчика и увеличивать ее после каждого прохода, используя оператор increment : ++
;
Вот небольшой пример кода для вас:
$args = array(
'posts_per_page' => 2,
);
$query = new WP_Query( $args );
if( $query->have_posts() ){
$count = 0; // Start a Counter
while( $query->have_posts() ){
$query->the_post();
printf( '<div class="post float-%s">', ($count++ % 2 == 0) ? 'left' : 'right' ); // If counter is odd: "left", even: "right"
printf( '<h4 class="post-title">%s</h4>', get_the_title() );
the_content();
echo '</div>';
}
} else {
echo 'No Posts Found.';
}
Пара вещей:
Я переместил массив $args
в его собственную переменную. Некоторые запросы могут быть довольно сложными, их назначение в качестве назначенной переменной может улучшить долговременное сопровождение.
Вам также не нужен аргумент post_type
, если вы просто хотите post
потому что это значение по умолчанию.
Я добавил предложение if
, поэтому, если ваши сообщения когда-либо исчезнут или вы переместили этот код, произойдет возврат к "ничего не найдено" ".
Я использовал немного сложный Тернарный оператор в почтовом классе. Я увеличиваю его там, чтобы нам не нужна была еще одна строка для увеличения $count
позже, и это устраняет необходимость в многострочном «if / else» для определения left
или right
.
Кроме того, вы не предоставили структуру разметки, поэтому я использовал функции the_
и get_the_
, если вы не знаете о разнице.