scribble

守望的麦子

About Projects Tool Guestbook

08 Jun 2010
WordPress 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

scribble

About Projects Tool Guestbook