Как объединить два цикла для создания единого запроса wordpress - PullRequest
0 голосов
/ 06 мая 2020

У меня есть два цикла, и мне нужно объединить их в список

if ( have_rows('product_a')) :
    while ( have_rows('product_a') ) : the_row();

        echo get_field('product_name');

    endwhile;
endif;

if ( have_rows('product_b')) :
    while ( have_rows('product_b') ) : the_row();

        echo get_field('product_name');

    endwhile;
endif;

, чтобы результат был таким, поэтому объединяйте их в список

* product_a name
* product_B name

, только если Я мог бы сделать этот код ниже

if ( have_rows('product_a && product_b')) :
    while ( have_rows('product_a && product_b') ) : the_row();

        echo get_field('product_name');

    endwhile;
endif;

Я пробовал этот код и его работу, но это хорошая практика

if ( have_rows('product_a') || have_rows('product_b') ) :
while ( have_rows('product_a') || have_rows('product_b') ) : the_row();

, а также еще одна проблема: get_row_index () считает только 1 вместо 2

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете сохранить значения в массивах и сделать вывод позже:

$array_counter = 0;
$product_a = [];
$product_b = [];

if ( have_rows('product_a')) :
    while ( have_rows('product_a') ) : the_row();

        $product_a[$counter] = get_field('product_name');
        $counter++;

    endwhile;
endif;

if ( have_rows('product_b')) :
    while ( have_rows('product_b') ) : the_row();

        $product_b[$counter] = get_field('product_name');
        $counter++;

    endwhile;
endif;

Итак, у вас есть свои массивы. Теперь вы хотите объединить их в чередующемся порядке:

$combined = [];
$length = count($product_a);
for ($i=0; $i < $length ; $i++) {
    $combined[] = $product_a[$i];
    $combined[] = $product_b[$i];
}

На каждой итерации один элемент из каждого массива будет добавлен к комбинированному массиву. Итак, у вас есть продукты в правильном порядке.

Теперь вы можете просто просмотреть свой массив и вывести каждое значение одно за другим:

$full_length = count($combined);
$counter = 0;
while ($counter < $full_length ) {
    echo '<li>'.$combined[$counter].'</li>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...