WordPress 3.0 – 2:导航菜单使用教程wp_nav_menu()
wordpress 3.0的导航菜单功能或许是最受欢迎的一项新功能。不管对于WordPress新手还是开发人员来说,它都提供了极大的便利。本文将教你如何使用WordPress 3.0的导航菜单功能。
1. 激活导航菜单功能
在外观/Appearance里面有个Menus菜单项,如果你的主题并没有激活导航菜单功能,该页将显示提示:
The current theme does not support menus.
你的主题还没有激活菜单功能。如何激活呢?很简单,把下面的代码放到你的functions.php文件中:
add_theme_support( 'nav-menus' );
然后刷新Menus页面,你会看到下图中的样子。

WordPress beta2 Menus截图
如果你看过本站之前发布的文章WordPress 3.0 – 1:强大新功能一览,你会发现,之前的菜单页面截图和现在不同。是的,之前用的是3.0 beta1, 现在是3.0 beta2,导航菜单功能的界面有了很大的改变,估计3.0正式版出来,应该也就是这个样子了。
2. 添加导航菜单和菜单项
你可以创建多个导航菜单,每个菜单里,可以添加自定义链接项、页面项和分类项进去。
添加进去以后,你可以又再编辑每个项目的链接,输出文本和Title属性。
你可以拖拽每个项目来排序菜单项。

3. 通过Widget输出导航菜单
添加好菜单后,进入Appearance->Widgets(外观->小工具), 把Navigation Menu这个Widget拖到你的Sidebar模块里,选择一个菜单输出即要。

4. 通过手动代码输出导航菜单
如果你的主题不支持Widget或你不想使用Widget,你可以使用函数wp_nav_menu()直接输出导航菜单:
<?php wp_nav_menu($args); ?>
该函数可传递一个数组进去,指定该菜单的各项参数,比如调用哪个菜单、如何排序、给菜单指定一个div层等等。具体的各参数取值请见官方说明文档。
当你使用<?php wp_nav_menu(); ?>时,将调用第一个导航菜单。如果你想调用其它菜单,可以通过菜单的id, slug, menu名称来指定:
<?php wp_nav_menu(array('id'=>5)); ?>
or
<?php wp_nav_menu(array('menu'=>'Test Menu')); ?>
or
<?php wp_nav_menu(array('slug'=>'testmenu')); ?>
但不知道是beta2还有bug还是我没折腾成功,有几个问题需要注意:
- 我测试时,使用id并不能成功指定某个菜单。
- 没有地方指定和寻找菜单的slug。
- ‘menu’=>’菜单名称’可用。但当菜单名称使用的是中文,且你手动函数输出菜单的时候,你的模板代码应该是UTF-8或ANSI as UTF-8模式,才能正确的指定某个菜单。但不建议使用中文做为菜单名,中文菜单名还会输出一长串URL编码的字符指定为该菜单的id值,看着特不舒服。
5. CSS样式化菜单风格
下图是我测试的一个菜单输出的html代码,它包含几个外部自定义链接,一篇内部文章的自定义链接,一个分类和一个页面。

我们可以看到,每个菜单项都含有一系列的class选择器:
- 每个菜单项都含class选择器menu-item
- 每个菜单项含有菜单类型class选择器: 比如自定义链接项含menu-item-type-custom, 页面项含menu-item-type_post_type, 分类项含menu-item-type-taxonomy
- 页面项含菜单的对象类型class选择器 menu-item-object-page
- 分类项含菜单的对象类型class选择器menu-item-object-category
- 当位置处于当前页面或当前分类的时候,增加一个供高亮样式的class选择器current-menu-item
- 当位置是一篇post文章时,该post如果在菜单中,也会增加高亮class选择器,同时,它所属的分类也会增加高亮class选择器。
所以,我们可以通过这些选择器的不同来进行CSS样式化,比如把页面、分类和自定义链接指定不同的字体颜色,让当前项反色显示等等。

OK, 这就是Wordpress 3.0的导航菜单使用教程了,让我们一起期待正式版的发布吧。



7:10 下午
沙发党又一次到此一游……
9:41 下午
真是好教程。
9:41 下午
我第二也不错。
10:41 上午
不知道正式版什么时候发布,
12:58 下午
4:02 下午
wordpress函数真多呀。
6:36 下午
八卦党路过,来此取经。
11:52 上午
1:50 下午
来看看。打酱油的,,,,嘿嘿
12:13 上午
有用的知识
5:18 下午
帕兰干啥去鸟,这么多天都没有更新。我还期待我的投稿能被你征用呢
6:55 下午
好的!!学习了!有用的知识
11:24 上午
希望以后能多写出些这样的文章
5:11 下午
啥子时候出正式版?
2:08 上午
希望以后能多写出些这样的文章!
7:21 下午
Your article very good. I am ready reproduced.
2:31 下午
文章不错!学习了!谢谢分享
5:14 下午
学习,学习,不错哦
5:14 下午
教程不错。
9:49 下午
顶一下!
9:50 下午
强!顶一下!不错.!
8:24 下午
呼呼,很不错,值得期待!
2:18 上午
不知道3。0正式版是不是能尽快推出,中文包尽快出。否则我可能弃用WP了,目前几个朋友的需求已经越来越向非博客方面发展了,WP已经不能满足了,只能向KINGCMS这类的去转了。
8:55 上午
刚升级到wordpress 3.0 RC版本~~好多功能还在摸索中~~
不过感觉离CMS又近了一步了~~
9:40 下午
很不错的教程。支持了
11:20 下午
3.0什么时候有中文版的时候再用,EN在看不懂。3.0的功能很吸引人
5:27 下午
三点零正式版要什么时候才会发布呀?好期待
8:46 下午
上海会议专家来给你支持下
8:47 上午
黑莓怎么不见了?
10:26 上午
@游子网络
我也在等正视版
10:38 上午
不知道WordPress正式版出来以后现在用的一些插件也跟上去的
9:40 下午
学习了
11:41 下午
精彩!.楼主辛苦!
2:18 下午
不错!谢谢分享!我会再来的咯!六一儿童节快乐
5:57 下午
回家之前来拜访一下博主,端午节快乐啊。
8:29 下午
精彩!.楼主辛苦!
10:49 上午
天热啦,,搞得实在是没什么心情,不过看了你的文章后感觉不错,O(∩_∩)O~
9:51 下午
博主很厉害 呵呵
11:16 上午
牛啊。
12:20 下午
这倒是期待已久了,,,
10:01 下午
還在研究
12:47 上午
收藏了,博主辛苦了!
12:14 上午
非常感谢帕兰印象!通过本文我成功的将分类目录添加到导航栏。非常感谢!
9:59 下午
比以前方便多了,
3:39 下午
没有用过这些东东,不适用。。。
10:48 上午
好像很难的样子
3:41 下午
不错,学习了.
10:16 上午
学习了,谢谢!
3.0版本的菜单确实很实用的.正在研究中…
11:11 下午
还没升级到3.0
好用吗?
6:51 下午
8错。
12:16 上午
很详细,谢谢分享,复制慢慢的看。
8:13 下午
最近研究这个,终于找到答案了
12:34 上午
强啊,要顶,接收了
5:20 下午
收下了,太好了!正好需要!
9:51 上午
学习中!非常谢谢!