wordpress指定导航菜单容器类不同

时间:2014-03-30 02:55:14

标签: wordpress

静态html代码如下

<div class="color1 navbox">
    <ul>
      <li><a href="">item1</a></li>
      <li><a href="">item2</a></li>
      <li><a href="">item3</a></li>
      <li><a href="">item4</a></li>
      <li><a href="">item5</a></li>
      <li><a href="">item6</a></li>
    </ul>
</div>
<div class="color2 navbox">
    <ul>
      <li><a href="">item1</a></li>
      <li><a href="">item2</a></li>
      <li><a href="">item3</a></li>
      <li><a href="">item4</a></li>
      <li><a href="">item5</a></li>
      <li><a href="">item6</a></li>
    </ul>
</div>

我想使用wp_nav_menu()获取通过管理面板设置的菜单项,每个div容器包含6个项目。 我不熟悉wp,所以需要你指出如何循环。 谢谢。

// 我找到了一条路并且运行良好。

  $menus = wp_get_nav_menus();
  $menu_items = wp_get_nav_menu_items($menus[0]);

  $i = 1;

  $total = count($menu_items);

  $menuBox = ceil($total/6);
  foreach ($menu_items as $key=>$menu_item):
    if ($key%6==0) {
      echo '<div class="color'.$i.' grid_6 navbox"><ul>';
      $i++;
    }
    echo "<li> <a href='$menu_item->url'>$menu_item->title</a></li>";

    if ($key== $total-1) {
      echo '</ul></div>';
    }else{
      for ($j=0; $j < $menuBox; $j++) {
        if ($key == $j*6-1) {
           echo '</ul></div>';
        }
      }
    }
    endforeach;

1 个答案:

答案 0 :(得分:0)

我想我理解你的问题。最好的方法是声明自定义导航位置,然后在需要的位置调用它们(如果您决定在页面上的多个位置使用相同的导航,则可以避免重复ID。)

这将放在你的函数文件中(根据需要更改名称):

function nav_menu_locations() {
  // Register nav menu locations
  register_nav_menus( array(
    'header' => 'Header Menu',
    'sidebar' => 'Sidebar Menu',
    'footer' => 'Footer Menu'
    )
  );
}
add_action( 'after_setup_theme', 'nav_menu_locations' );

然后调用其中一个,在相应的模板中使用它:

<?php wp_nav_menu(array('theme_location' => 'header')); ?>