Npcink Blog
切换菜单

wordpress 函数详解:wp_nav_menu()

详细的介绍了 wp_nav_menu 函数,用于控制 wordpress 菜单的显示

本页目录5 节

这是一个控制 WordPress 主题菜单显示的函数,这也是在 WordPress 主题开发中比较重要的一个函数,详细的了解此函数有利于学习 WordPress 的主题开发。

此文来源于:《官方函数文档:wp_nav_menu()》

输入内容格式如下:

wp_nav_menu( array $args = array() )

显示导航菜单

这是现成的代码片段(不是真正的贡献,比其他任何快捷方式都重要):

wp_nav_menu( array $args = array(
'menu' => "", // (int|string|WP_Term) 所需菜单。接受菜单ID、slug、name或object。
'menu_class' => "", // (string) CSS类,用于构成菜单的ul元素。默认menu。
'menu_id' => "", // (string) 应用于构成菜单的ul元素的ID。默认为menu slug,递增。
'container' => "", // (string) 是否包装ul,以及用什么包装ul。默认div。
'container_class' => "", // (string) 应用于容器的类。默认“menu-{menu slug}-container”。
'container_id' => "", // (string) 应用于容器的id。
'fallback_cb' => "", // (callable|bool) 如果菜单不存在,将启动回调函数。默认为wp_page_menu。设置为false表示没有回退。
'before' => "", // (string) 链接标记前的文本。
'after' => "", // (string) Text after the link markup.
'link_before' => "", // (string) 链接文本之前的文本。
'link_after' => "", // (string) Text after the link text.
'echo' => "", // (bool) 是回显菜单还是返回菜单。默认为true。
'depth' => "", // (int) 要包含多少层次结构。0表示全部。默认值0。
'walker' => "", // (object) 自定义walker类的样式。
'theme_location' => "", // (string) 要使用的主题位置。必须使用register_nav_menu()注册,以便用户可以选择。
'items_wrap' => "", // (string) 列表项应如何包装。默认值是具有id和类的ul。使用带编号占位符的printf()格式。
'item_spacing' => "", // (string) 是否在菜单的HTML中保留空白。接受“preserve”或“discard”。默认preserve。
) );

参数

$ args

(array) (可选) 导航菜单参数的数组。

  • 'menu'
    (int | string | WP_Term)所需菜单。接受菜单 ID,段,名称或对象。
  • 'menu_class'
    (字符串) CSS 类,用于形成菜单的 ul 元素。默认为“菜单”。
  • 'menu_id'
    (字符串)应用于构成菜单的 ul 元素的 ID。默认为菜单项,递增。
  • 'container'
    (字符串)是否包装 ul,以及包装什么。默认为“ div”。
  • 'container_class'
    (字符串)应用于容器的类。默认为“菜单-{菜单子弹}-容器”。
  • 'container_id'
    (字符串)应用于容器的 ID。
  • 'fallback_cb'
    (callable | bool)如果菜单不存在,则将触发回调函数。默认值为“ wp_page_menu”。设置为 false 不会回退。
  • 'before'
    (字符串)链接标记之前的文本。
  • “之后”
    (字符串)链接标记之后的文本。
  • 'link_before'
    (字符串)链接文本之前的文本。
  • 'link_after'
    (字符串)链接文本之后的文本。
  • 'echo'
    (布尔)是回显菜单还是返回菜单。默认为 true。
  • 'depth'
    (int)要包含多少个层次结构。0 表示全部。默认值 0
  • 'walker'
    (对象)自定义 walker 类的实例。
  • 'theme_location'
    (字符串)要使用的主题位置。必须向 register_nav_menu()注册,以便用户选择。
  • 'items_wrap'
    (字符串)应该如何包装列表项。默认值为带有 ID 和类的 ul。使用带编号占位符的 printf()格式。
  • 'item_spacing'
    (字符串)是否保留菜单 HTML 内的空格。接受“保留”或“丢弃”。默认为“保留”。

默认值:array()


返回

(string | false | void)如果$ echo 为 false,则菜单输出,如果没有项目或没有找到菜单,则为 false。

更多信息

用法

1 个wp_nav_menu( $args );

给定一个 theme_location 参数,该函数将显示分配给该位置的菜单。如果不存在这样的位置或没有为其分配菜单,则参数 fallback_cb 将确定显示的内容。

如果未提供 theme_location 参数,则函数显示

  • 与菜单参数给定的 ID,子段或名称匹配的菜单;
  • 否则,第一个非空菜单;
  • 否则(或者如果 menu 给定的菜单为空),则输出 fallback_cb 参数给定的函数(默认为 wp_page_menu());
  • 否则什么都没有。

以下类适用于菜单项,即 HTML 生成的 HTML <li>标签wp_nav_menu():

所有菜单项

  • .menu-item
    此类添加到每个菜单项。
  • .menu-item-has-children
    此类已添加到具有子项的菜单项。
  • .menu-item-object-{object}
    此类添加到每个菜单项,其中{object}是发布类型或分类法。
  • .menu-item-object-category
    此类已添加到与类别相对应的菜单项中。
  • .menu-item-object-tag
    此类已添加到与标签相对应的菜单项中。
  • .menu-item-object-page
    此类已添加到与静态页面相对应的菜单项中。
  • .menu-item-object-{custom}
    此类已添加到与自定义帖子类型或自定义分类法相对应的菜单项。
  • .menu-item-type-{type}
    此类添加到每个菜单项,其中{type}是“ post_type”或“分类”。
  • .menu-item-type-post_type
    此类被添加到与帖子类型相对应的菜单项中:静态页面或自定义帖子类型。
  • .menu-item-type-taxonomy
    将此类添加到与分类法相对应的菜单项:即类别,标签或自定义分类法。

当前页面菜单项

  • .current-menu-item
    此类已添加到与当前呈现的页面相对应的菜单项中。

当前页面父菜单项

  • .current-menu-parent
    此类已添加到与当前呈现的页面的层次结构父级相对应的菜单项中。
  • .current-{object}-parent
    此类被添加到与当前渲染的对象的层次父级相对应的菜单项中,其中{object}对应于.menu-item-object- {object}所使用的值。
  • .current-{type}-parent
    此类已添加到与当前呈现的类型的层级父级相对应的菜单项中,其中{type}对应于.menu-item-type- {type}所使用的值。

当前页面祖先菜单项

  • .current-menu-ancestor
    此类被添加到与当前呈现的页面的层次祖先相对应的菜单项中。
  • .current-{object}-ancestor
    此类已添加到与当前渲染的对象的层级祖先相对应的菜单项中,其中{object}对应于.menu-item-object- {object}所使用的值。
  • .current-{type}-ancestor
    此类被添加到与当前呈现类型的层次结构祖先相对应的菜单项中,其中{type}对应于.menu-item-type- {type}所使用的值。

网站首页菜单项

  • .menu-item-home
    此类已添加到与网站首页相对应的菜单项中。

并且向后兼容 wp_page_menu()

添加了以下类以保持与[]函数输出:

  • .page_item
    此类已添加到与静态页面相对应的菜单项中。
  • .page_item_has_children
    此类被添加到具有子页面的菜单项中。
  • .page-item-$ID
    此类被添加到与静态页面相对应的菜单项中,其中$ ID 是静态页面 ID。
  • .current_page_item
    此类被添加到与当前呈现的静态页面相对应的菜单项中。
  • .current_page_parent
    此类已添加到与当前呈现的静态页面的层次结构父级相对应的菜单项中。
  • .current_page_ancestor
    此类已添加到与当前呈现的静态页面的分层祖先相对应的菜单项中。