@hypero

Добавление дивов в цикл foreach php?

Всем привет. пытаюсь вывести посты. Нужно вывести 2 контейнера с разными классами, в одном контейнере 2 записи, во втором 3 записи.

<?php 
$gallery_args = array(
    'number'     => -1,
    'post_status' => 'publish',
    'order' => 'DESC',
    'post_type' => 'gallery',
    'suppress_filters' => 0,
);

$i=0;
echo '<div class="gallery-panel-left">';
foreach($gallery_args as $child) {
    $i++; ?>
    <div class="panel-item" style="background: url(<?php bloginfo('template_directory'); ?>/img/gallery-photo4.png) no-repeat;background-size:cover;">
        <div class="gallery-panel-info">
            <div class="gallery-panel-title"><?php echo $child->post_title; ?></div>
            <div class="gallery-panel-description">Классы, в которых мы ждем именно Вас!</div>
        </div>
    </div>
    <?php
    if ($i % 2 == 0) {
        echo '</div><div class="gallery-panel-right">';
    }
}
echo '</div>';
?>

Нужно вывести в левом диве 2 записи, в правой 3.
Как это сделать?
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 2
artzolin
@artzolin
php, WordPress разработка сайтов zolin.digital
Во-первых нужно по аргументам получить нужные записи из базы с помощью wp_query() или get_posts(), а аргумента 'number' не существует

А во вторых в цикле foreach можно использовать переменную $key, которая уже является счетчиком итераций цикла

foreach ( $variable as $key => $value ) {
	# code...
}
Ответ написан
@lolzqq
HTML,CSS,JS,PHP
Примерно так выглядит логика
<?php
$gallery_args=['123','123','123','123','123','123','123','123','123','123'];

$side='left'; // определяет сторону, в которую выводим данные - вывод начинаем с левого блока
$opened=false; // определяет - открыт ли див, в который выводим данные
$j=1; // считает кол-во выводимых постов
foreach($gallery_args as $child) {
	if($side=='left'){
		if($opened==false){
		   echo "открываете див для левой колонки<br/>";
		   $opened=true;
		}
		if($j<=2){
			echo "печатаете статью<br/>";
			$j++;
		}else{
			$j=1;
			$side='right';
			$opened=false;
			echo "закрываете див для левой колонки<br/>";
		}
	}else{
		if($opened==false){
		   echo "открываете див для правой колонки<br/>";
		   $opened=true;
		}
		if($j<=3){
			echo "печатаете статью<br/>";
			$j++;
		}else{
			$j=1;
			$side='left';
			$opened=false;
			echo "закрываете див для правой колонки<br/>";
		}
	}
}
?>

_WpDOq-4iqo.jpg?size=274x247&quality=96&sign=0e639a1480a3b82f115a5f8a44817970&type=album
Ответ написан
Ваш ответ на вопрос

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

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