导航菜单是每一个WordPress主题必须的元素,如果你要制作一个WordPress主题,那就必须熟悉WordPress导航菜单注册函数 register_nav_menus() 和 导航菜单调用函数wp_nav_menu() ,这两个参数一般都是配合使用的。今天我们就一起来解释一下这两个函数,并举例说明。

导航菜单注册函数 register_nav_menus() 介绍

register_nav_menus() 是3.0以后用来注册自定义菜单的函数,通过它可以很方便地给你的主题注册一个或多个菜单,在主题的 functions.php 中添加:

1
2
3
4
register_nav_menus( array(
'header_menu' => 'My Custom Header Menu',
'footer_menu' => 'My Custom Footer Menu'
) );

上面的代码注册了两个代码,其中 'header_menu'  和 'footer_menu' 分别是这两个菜单的“键key”,而后面的 'My Custom Header Menu' 和 'My Custom Footer Menu' 是对这个菜单的描述,会在 外观 - 菜单 中显示出来。下文将会图例说明。

按照上面的结构,就可以注册多个菜单。

导航菜单调用函数 wp_nav_menu() 介绍

wp_nav_menu() 是WordPress 3.0 以后添加的一个自定义导航菜单调用函数,可用来调用 register_nav_menus() 注册的菜单。wp_nav_menu()的使用方法位于wp-includes/nav-menu-templates.php文件中。

可以通过 <?php wp_nav_menu( $args ); ?> 来调用菜单,其中参数 $args 的默认值如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
 
$defaults = array(
'theme_location' => '',
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'depth' => 0,
'walker' => ''
);
 
wp_nav_menu( $defaults );
 
?>

每个参数的详细介绍如下:

  • $theme_locaton:(字符串)(可选)

默认值: None

用于在调用导航菜单时指定注册过的某一个导航菜单名,如果没有指定,则显示第一个。

1
wp_nav_menu(array( 'theme_location'   =>'primary')); //调用第一个菜单
  • $menu:(字符串)(可选)

默认值: None

使用导航菜单的名称调用菜单,可以是 id, slug, name (按顺序匹配的) 。

  • $container:(字符串)(可选)

默认值: div

ul 父节点(这里指导航菜单的容器)的标签类型,只支持div 和 nav 标签, 如果是其它值, ul 父节点的标签将不会被显示。也可以用false(container => false)去掉ul父节点标签。

  • $container_class:(字符串)(可选)

默认值: menu-{menu slug}-container

ul 父节点的 class 属性值。

  • $container_id:(字符串)(可选)

默认值: None

ul 父节点的 id 属性值。

  • $menu_class:(字符串)(可选)

默认值: menu

ul 节点的 class 属性值。

  • $menu_id:(字符串)(可选)

默认值: menu slug, 自增长的

ul 节点的 id 属性值。

  • $echo:(布尔型)(可选)

默认值: true (直接显示)

确定直接显示导航菜单还是返回 HTML 片段,如果想将导航的代码作为赋值使用,可设置为false。

  • $fallback_cb:(字符串)(可选)

默认值: wp_page_menu (显示页面列表作为菜单)

用于没有在后台设置导航时调的回调函数。

  • $before:(字符串)(可选)

默认值: None

显示在每个菜单链接前的文本。

  • $after:(字符串)(可选)

默认值: None

显示在每个菜单链接后的文本。

  • $link_before:(字符串)(可选)

默认值: None

显示在每个菜单链接文本前的文本。

  • $link_after:(字符串)(可选)

默认值: None

显示在每个菜单链接文本后的文本。

  • $items_wrap:(字符串)(可选)

默认值: None

使用字符串替换修改ul的class。

  • $depth:(整型)(可选)

默认值: 0

显示菜单的深度, 当数值为 0 时显示所有深度的菜单。

  • $walker:(对象型)(可选)

默认值:  new Walker_Nav_Menu

导航菜单注册和调用示例

要想定义出灵活强大的菜单,需要我们熟悉上面介绍的 导航菜单注册函数 register_nav_menus() 和 导航菜单调用函数wp_nav_menu() 。

1.首先我们先要激活 WordPress 3.0 以后的自定义菜单功能,也就是要注册菜单。在主题的 functions.php文件中添加下面的代码:

1
2
3
4
5
//添加导航
register_nav_menus(array(
'left-menu' => '左边栏菜单',
'top-menu' => '顶部菜单',
));

这样我们就注册了 左边栏菜单 和顶部菜单,你可以在 外观-菜单 中查看到:

我们可以使用下面的函数调用 左边栏菜单:

1
2
3
4
5
<?php
if(function_exists('wp_nav_menu')) {
wp_nav_menu(array( 'theme_location' => 'left-menu','container_id'=>'menu_left') );
}
?>

其中,'theme_location' 后面的值 是 'left-menu',就是调用前面注册的那个 左边栏菜单,而 'container_id' 自定义为 'menu_left',最终输出的html结构如下:

1
2
3
4
5
6
7
8
<div id="menu_left" class="menu-xxx-container">
<ul class="menu">
<li><a href="http://www.wpdaxue.com">首页</a></li>
<li><a href="http://www.wpdaxue.com/news">WP资讯</a></li>
…………
<li><a href="http://www.wpdaxue.com/announce">本站相关</a></li>
</ul>
</div>

也就是说,菜单使用 <div id="menu_left">……</div> 来包含了,接下来,你就可以根据这个 id 来写css美化菜单的显示效果了。

WordPress导航菜单函数的更多相关文章

  1. 改进你的WordPress导航菜单 —— 输出标题描述

    在WordPress 3.0中增加了自定义菜单功能,如果你在WordPress后台(外观>菜单)创建一个菜单,你可以在主题中使用wp_nav_menu()函数来显示这些菜单.但是像图中这种带描述 ...

  2. WordPress菜单函数wp_nav_menu()详细介绍

    导航菜单函数wp_nav_menu()进行详细的说明. 1.wp_nav_menu()函数介绍: worpdress发展到3.0以后增加了一个自定义菜单函数wp_nav_menu(),使得wordpr ...

  3. WordPress入门 之 设置导航菜单

    WordPress 3.0 添加了一个自定义导航菜单的功能,让你可以很自由地设置网站的导航菜单.现在大多数的主题也都支持这个功能了,那么,究竟该如何设置WordPress导航菜单?今天倡萌就介绍一下. ...

  4. WordPress自定义菜单和修改去除多余的css

    这里主要是用于模板制作的,一般前端已经写好了,我们只要将前端的内容套用WordPress后台就可以了. 所以我们在模板制作过程中,需要自定义WordPress菜单. 在functions.php文件中 ...

  5. WordPress主题开发:开启导航菜单功能

    步骤一:开启导航菜单功能 <?php /* register_nav_menu( $location, $description ) 函数功能:开启导航菜单功能 @参数 string $loca ...

  6. Wordpress菜单函数wp_nav_menu各参数详解及示例

    Wordpress菜单函数wp_nav_menu各参数详解及示例   注册菜单 首先要注册菜单,将以下函数添加至function.php函数里   register_nav_menus(array( ...

  7. jquery火焰等效果导航菜单

    jQuery-火焰灯效果导航菜单 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpre ...

  8. jq倾斜的动画导航菜单

    效果预览网址:http://keleyi.com/keleyi/phtml/jqmenu/index.htm 支持IE.Chrome.火狐等浏览器 完整源代码,保存到HTML文件打开也可查看效果: & ...

  9. jquery和css3实现滑动导航菜单

    效果预览:http://keleyi.com/keleyi/phtml/html5/15/ 有都中颜色可供选择,请使用支持HTML5/CSS3的浏览器访问. HTML源代码: <!DOCTYPE ...

随机推荐

  1. NSData与UIImage之间的转换

    1 //NSData转换为UIImage 2 NSData *imageData = [NSData dataWithContentsOfFile: imagePath]; 3 UIImage *im ...

  2. spring mvc与mybatis整合错误提示

    java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L ...

  3. office2010安装不成功提示缺少MSXML 6.10.1129.0?

    office2010安装 1. office重装 由于之前重装系统后安装office2010很顺利,这次删除office2010,由于没有删除干净,在程序删除面板中误点删除了其他文件所致,所以在此安装 ...

  4. underscore functions

    // 创建一个用于设置prototype的公共函数对象 var ctor = function() {}; 1..bind(function, object, [*arguments]) :绑定fun ...

  5. golang array, slice, string笔记

    本来想写一篇关于golang io的笔记,但是在学习io之前必须了解array, slice, string概念,因此将在下篇写golang io.   array: 数组的长度是该数组类型的一部分, ...

  6. iis 中https修改主机名方法

    来源地址:  https://www.pianyissl.com/support/page/29

  7. Word发表blog格式模板

    一级标题(黑体,二号,加粗) 二级标题(黑体,三号,加粗) 正文(宋体+Times New Roman,小四) 注意事项: 序号列表"不连续"时,不得使用自动序号 连续(word连 ...

  8. Python 断言 assert 的用法

    assert 后边接的表达式的返回值必须是布尔值 assert expression, "对错误的描述信息" 如果expression表达式返回的是True, 程序正常执行, 如果 ...

  9. Ultra-QuickSort (POJ 2299)树状数组+离散化

    题目链接 Description In this problem, you have to analyze a particular sorting algorithm. The algorithm ...

  10. mybatis源码追踪1——Mapper方法用法解析

    Mapper中的方法执行时会构造为org.apache.ibatis.binding.MapperMethod$MethodSignature对象,从该类源码中可以了解如何使用Mapper方法. [支 ...