08 Jun 2010WordPress 3.0来了,你的主题准备好了吗?
目前WordPress 3.0 RC已发布,新版增加了许多功能,可能喜欢尝鲜的朋友已迫不及待地升级了自己博客,其中在主题选项中多出一个Menus功能,一个可以方便灵活地向导航菜单添加自定义内容的新功能。但当你打开这个选项时会提示 “The current theme does not natively support menus, but you can use the “Custom Menu” widget to add any menus you create here to the theme’s sidebar.” 主要意思就是当前的主题不支持菜单功能,不过我们依然可以添加自定义菜单到主题侧边栏中,也就是小工具。然而当你启用3.0版默认主题Twenty Ten后,这个提示就消失了,看来是新的默认主题针对3.0功能进行了优化。
原来在默认主题functions.php中有一句:
// This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'primary' => __( 'Primary Navigation', 'twentyten' ), ) ); |
把这句代码添加到当前主题functions.php模板文件中,提示也消失了,关键就是这句了。
也可以用:
// This theme uses wp_nav_menu() if ( function_exists( 'register_nav_menus' ) ) { register_nav_menus( array( 'foot_menu' => 'My Custom Footer Menu', 'sidebar_menu' => 'Super Sidebar Menu' ) ); } |
或者更简单的代码(Wheat Notes正在使用):
// This theme uses wp_nav_menu() add_theme_support( 'nav-menus' ); |
详细函数语法参照:http://codex.wordpress.org/Function_Reference/register_nav_menus
但只修改这里,并不会真正在主题导航菜单上启用这个功能,只会在侧边小工具中多出custom menu小工具一项,还需修改导航部分代码,才会体验到新的功能。
一般主题导航部分代码为:
<?php wp_list_pages('title_li='); ?> |
或者类似:
<?php wp_list_categories('sorderby=name&depth=4&title_li='); ?> |
需将其修改为 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')); ?> |
介绍个WOPUS推荐的:
<?php wp_nav_menu( 'id=navbar' ); ?> |
也可以根据自己使用的主题功能修改为类似(Wheat Notes正在使用):
<?php wp_nav_menu( 'id=navbar&menu_class=headermenu' ); ?> |
详细函数语法参照:http://codex.wordpress.org/Function_Reference/wp_nav_menu
主题改造完成,下面简单介绍一下这个Menus功能的使用方法:
打开Menus设置页面,在+区域输入menu name后点击creat menu添加一个新的自定义菜单。
在左侧选择准备显示在导航菜单的分类标题或页面,也可以添加一个链接,然后点击“add to menu”添加到新的自定义菜单中,保存菜单。
官方操作说明:http://codex.wordpress.org/Appearance_Menus_SubPanel
刷新博客页面,看看新的导航菜单是不是出来了。
总结:个人感觉这是3.0版一个非常不错的新功能,可以灵活方便地变更主题导航菜单内容,不受主题本身限制,但之前所有主题都不支持这个功能,需手动修改模板文件,建议新手更改前备份主题。
Til next time,
Jason at 00:00