导航菜单

导航菜单是主题中可定制的菜单,它们允许用户在菜单中添加页面、文章、类别和URL。要创建一个导航菜单,你需要注册它,然后在你的主题中的适当位置显示该菜单。

注册菜单

你需要在主题的 functions.php 中注册菜单,这将设置在外观->菜单中出现的名称。

首先,使用register_nav_menus()来注册菜单。

在本例中,有两个位置被添加到 "管理位置" 选项卡。“Header Menu” 和 “Extra Menu”。

function register_my_menus() {
  register_nav_menus(
    array(
      'header-menu' => __( 'Header Menu' ),
      'extra-menu' => __( 'Extra Menu' )
     )
   );
 }
 add_action( 'init', 'register_my_menus' );

 

显示菜单

一旦注册了菜单,你需要使用wp_nav_menu()来告诉主题在哪里显示它们。例如,在你的header.php文件中添加以下代码,以显示上面注册的header-menu。

wp_nav_menu( array( 'theme_location' => 'header-menu' ) );

完整的参数列表可以在wp_nav_menu()页面的函数参考中找到

对任何你想在主题中显示的其他菜单重复这个过程。另外,你可以添加一个容器类,允许用CSS来设计菜单。

wp_nav_menu(
  array(
    'theme_location' => 'extra-menu',
    'container_class' => 'my_extra_menu_class' 
  )
);

CSS类的完整列表可以在wp_nav_menu()页面的函数参考中找到,你可以用这些来设计你的菜单。

 

显示附加内容

下面是一个简化版的Twenty Seventeen页脚社交菜单,它在菜单项目label文本前后显示span元素。

wp_nav_menu(
  array(
    'menu' => 'primary',
    'link_before' => '<span class="screen-reader-text">',
    'link_after' => '</span>',
  )
);

输出显示如:

<div class="menu-social-container">
  <ul id="menu-social">
    <li id="menu-item-1">
      <a href="http://twitter.com/"><span class="screen-reader-text">Twitter</span>
    </li>
  </ul>
</div>

在每个菜单项的<li><a>元素之间显示文本,使用beforeafter参数。

 

定义回调

默认情况下,当没有找到指定的菜单或位置时,WordPress会显示第一个非空的菜单,或者在没有选择自定义菜单时生成一个Page菜单。为了防止这种情况,请使用theme_location和fallback_cb参数。

wp_nav_menu(
  array(
    'menu' => 'primary',
    // do not fall back to first non-empty menu
    'theme_location' => '__no_such_location',
    // do not fall back to wp_page_menu()
    'fallback_cb' => false
  )
);