Создание цикла в цикле в WordPress для отображения 12 сообщений в группах по два, содержащихся в отдельных div

Я надеялся, что один из вас, гуру WordPress, может помочь мне здесь.

Я пытаюсь создать цикл внутри цикла, который представляет 12 сообщений в 6 строк. В каждом ряду у вас есть 2 деления. Каждый div предназначен для отображения заголовка сообщения. И цикл проходит через все 12 сообщений и группирует их правильно — 6 делений, с 2 сообщениями. Каждый пост имеет свой уникальный заголовок.

Мне удалось получить цикл для разбивки 12 постов на 6 делений, в каждом из которых есть два внутренних деления. Но я не могу заставить внутренние div проходить через все посты. Вместо этого они просто перебирают первые два.

Итак, в итоге я получаю 6 строк, в каждом из которых по два деления. Но только первые два сообщения продолжают повторяться во всех рядах. Что я здесь не так делаю?

<!--TESTER -->
<!--TESTER -->
<!--TESTER -->
<div class="section section-testimonials">

<?php
$args=array(
'post_type' => 'testimonial'
);
$query = null;
$query = new WP_Query($args);
if( $query -> have_posts() ) {
echo '';
$i = 0;

while ($query -> have_posts()) : $query->the_post();

if($i % 2 == 0) { ?>

<div class="row">

<?php $loop = new WP_Query( array( 'post_type' => 'testimonial', 'posts_per_page' => 2 ) ); ?>

<?php while ( $loop -> have_posts() ) : $loop -> the_post(); ?>

<!-- Two posts appear here -->
<div class="col-md-6">
<h1><?php the_title(); ?></h1>
</div>

<?php endwhile; ?>

</div>

<?php } ?>
<?php

$i++;
endwhile;
}

wp_reset_query();
?>

</div>
<!--TESTER -->
<!--TESTER -->
<!--TESTER -->

Любая помощь будет очень ценна!

Ура,
Sanny

2

Решение

Здесь я разбил проблему на части, чтобы вы могли видеть циклы, работающие сами по себе.

<?php

$slides = [0,1,2,3,4,5];

foreach($slides as $slide):
?>
<!-- I need to get 6 of these divs which contain 2 cards inside them -->
<div class="item active">
<p>Example Carousel Slide <?php echo $slide;?></p>
</div>
<?php endforeach?>

Тогда вместо того, чтобы просто повторить константу <p> тэг, вместо этого вы помещаете туда петлю.

<?php
$posts = ["post1", "post2"];
foreach($posts as $post):?>
<div class="col-md-6">
<?php echo $post;?>
</div>
<?php endforeach?>

Я прыгну вперед на несколько шагов, но в итоге ты получишь нечто подобное.

<?php

$posts = [
0=>"post0",
1=>"post1",
2=>"post2",
3=>"post3",
4=>"post4",
5=>"post5",
6=>"post6",
7=>"post7",
8=>"post8",
9=>"post9",
10=>"post10",
11=>"post11"];

for($slideNumber=0; $slideNumber < 6; $slideNumber++):
?>
<!-- I need to get 6 of these divs which contain 2 cards inside them -->
<div class="item active">
<?php
echo("<p>This is slide number " . $slideNumber . "</p>");
for($i=0; $i<2; $i++):?>
<div class="col-md-6">
<?php
$actualPostNumber= ($slideNumber * 2) + $i ;
echo("<p>" . $posts[$actualPostNumber]  . "</p>");
?>
</div>
<?php endfor; ?>
</div>
<?php endfor; ?>

Прочитайте этот код и постарайтесь придумать, что он будет производить. В итоге у вас должно получиться 6 слайдов, каждый из которых содержит два поста.

Код, который я разместил, является скелетом относительно вашего возможного решения. Однако, надеюсь, что этот подход «счетчики» поможет вам назначить правильное количество постов для каждого слайда карусели.

0

Другие решения

Спасибо, ребята, за помощь. Мне удалось это решить !!! Вот решение:

Если у кого-нибудь есть мысли по поводу того, чтобы сделать это лучшим решением, позвольте мне знать! ура

<?php
$args=array(
'post_type' => 'testimonial',
);

$query = new WP_Query($args);

if( $query -> have_posts() ) {
echo '';
$i = 0;
$ids = array();

while ($query -> have_posts()) : $query->the_post();

if($i % 2 == 0) { ?>

<div class="item <?php if($i == 0) :?>active<?php endif; ?>">
<div class="row">

<?php $loop = new WP_Query( array( 'post_type' => 'testimonial', 'posts_per_page' => 2, 'orderby'   => 'rand', 'post__not_in' => $ids ) ); ?>

<?php while ( $loop -> have_posts() ) : $loop -> the_post(); ?>

<!-- A single testimonial -->
<div class="col-md-6">
<div class="card card-plain">
<div class="content">
<h4 class="title"><?php the_content(); ?></h4>
<div class="footer">
<div class="author">
<span><?php the_title(); ?></span>
</div>
</div>
</div>
</div>
</div>

<?php $ids[] = get_the_ID(); ?>

<?php endwhile; ?>

</div>
</div>
<?php } ?>
<?php
$i++;
endwhile;
}

wp_reset_query();
?>
0

По вопросам рекламы [email protected]