0

我有 2 个 while 循环,我需要在第 n 次迭代时使用父 div 将它们都包装起来,因此输出如下所示的 neec

<!-- 1-4 items -->
<div class"parent">
<nav>
   <li>item 1</li>
   <li>item 2</li>
   <li>item 3</li>
   <li>item 4</li>
<nav>
<section>
   <li>content 1</li>
   <li>content 2</li>
   <li>content 3</li>
   <li>content 4</li>
</section>
</div>

<!-- 5-8 items -->
<div class"parent">
<nav>
   <li>item 5</li>
   <li>item 6</li>
   <li>item 7</li>
   <li>item 8</li>
<nav>
<section>
   <li>content 5</li>
   <li>content 6</li>
   <li>content 7</li>
   <li>content 8</li>
</section>
</div>

我知道如何单独迭代导航(和部分)并在每次迭代时将它们包装在一个 div 中......但我需要将这两个单独的 while 循环组合在一起并将它们一起迭代

 <?php $items = 0;  while ($sub_sections_mb->have_fields('sub-sections')) : ?>
    <?php if ($items % 4 == 0) : ?>

    <nav role="menu">
        <ul>
    <?php endif ; ?>      

               <li class="item col2 col <?php if ($items == 1){echo 'current';} ?>" role="menuitem"> <?php echo $i; $sub_sections_mb->the_value('title'); ?>

                </li>

    <?php   $items++;
            if ($items % 4 == 0) : ?>

        </ul>
    </nav>
    <?php   endif;
            endwhile; // End printing heading ?>

    <?php if ($items % 4 != 0) : ?>

      </ul>
    </nav>
    <?php endif ; ?> 

使用我当前的代码输出看起来像这样

<div>
<nav>
   <li>item 1</li>
   <li>item 2</li>
   <li>item 3</li>
   <li>item 4</li>
<nav>
<nav>
   <li>item 1</li>
   <li>item 2</li>
   <li>item 3</li>
   <li>item 4</li>
<nav>
</div>


<div>
<section>
   <li>content 5</li>
   <li>content 6</li>
   <li>content 7</li>
   <li>content 8</li>
</section>
<section>
   <li>content 5</li>
   <li>content 6</li>
   <li>content 7</li>
   <li>content 8</li>
</section>
</div>

如果有帮助,我正在使用 WP Alchemy metabox

4

1 回答 1

1

这只是一个可以帮助您入门的示例。您可能希望对其进行更改以匹配您的需要。我无法使用您的$sub_sections信息,所以我只使用了一个for()循环两次遍历信息。

编辑:将代码更新为以下内容:

$total = 7; // The total number of items.
$every = 4; // How many items go into each nav/section.

$output = '';

for($i = 0; $i < round($total / $every); $i++)
{
    $min = $i * $every;
    $max = $min + $every > $total ? $total : $min + $every;

    $output .= '<div class="parent">';

    /* Navigation */
    $output .= '<nav role="menu"><ul>';

    for($j = $min; $j < $max; $j++)
        $output .= '<li>Item ' . ($j + 1) . '</li>';

    $output .= '</ul></nav>';

    /* Section */
    $output .= '<section>';

    for($j = $min; $j < $max; $j++)
        $output .= '<div>Content ' . ($j + 1) . '</div>';

    $output .= '</section>';

    $output .= '</div>';
}

echo $output;

希望这能让你朝着正确的方向前进。

于 2013-04-25T16:52:20.387 回答