0

2 つの while ループがあり、n 回目の反復で親 div を使用する場合は両方をラップする必要があるため、以下のような出力が必要です

<!-- 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>

nav(およびセクション)を個別に反復し、反復ごとにdivでラップする方法を知っています...しかし、これら2つの別々の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メタボックスを使用しています

4

1 に答える 1

1

これは、開始するためのほんの一例です。必要なものに合わせて変更することをお勧めします。あなたの$sub_sections情報を使用できなかったのでfor()、情報を 2 回繰り返すループを使用しました。

編集: コードを次のように更新しました。

$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 に答える