WordPress 3.0 主题的向下兼容问题
直到现在我的 WordPress 还停留在 2.9.2,一直没有升到 3.0+。我们都知道 WordPress 3.0 对于单用户操作的博主而言,最耀眼的功能就在于导航菜单了,像我这样都还没有升级到 WordPress 3.0 的人来说,本没啥资格来谈论 3.0 的是与非,而且也有不少大虾们已经写过很多出彩的文章了。感谢一下陈小黑童鞋,给了我一个装好 WordPress 3.0 的测试站,让我在做的新主题有了开发的空间,我也就玩一下这 3.0 的导航菜单功能。
关于在主题中怎么添加 WordPress 3.0 的导航菜单功能我就不多说了,因为看很多人都写过鸟。我就来说一下这 3.0 的向下兼容问题。在我给新主题加上导航菜单功能后,发现一个很严重的问题,就是这个 wp_nav_menu() 调用函数居然只支持 WordPress 3.0,在我本地的 2.9 的环境中就报错了。可见 WordPress 官方的小组在升级的时候相当不给力啊,还要用户和开发者自己做向下兼容的处理。
看到一篇传说可以解决 WordPress 3.0 主题向下兼容以前版本的方法,不过明显作者在写代码的时候比较粗糙,并没有验证过(就算验证,也就是 WordPress 3.0 中作的测试),在我的 2.9 下还是行不通,仔细看了一下,也就是少了个判断,略加修改就可以使用了。
把以下代码复制到 WordPress 的 functions.php 中:
function mytheme_addmenus() {
register_nav_menus(array('primary' => 'The Main Menu'));
}
add_action( 'init', 'mytheme_addmenus' );
}
function mytheme_nav() {
if ( function_exists( 'wp_nav_menu' ) )
wp_nav_menu( 'menu=primary&container_class=pagemenu&fallback_cb=mytheme_nav_fallback' );
else
mytheme_nav_fallback();
}
function mytheme_nav_fallback() {
wp_page_menu( 'show_home=Start&menu_class=pagemenu' );
}
然后在主题需要的地方,比如说 header.php 中用这行代码调用即可:
这样就好了。回过来解释一下加入 functions.php 中的代码,简单来说分这么几个过程:1.判断是否支导航菜单的函数(也就是判断是不是 WordPress 3.0)2.如果是,就再调用 wp_nav_menu() 这个 3.0 中的导航菜单函数,一些参数什么的都可以在这里设置。3.如果不是,就调用 3.0 以下支持的 wp_page_menu() 这个函数,当然你也可以不用 wp_page_menu(),自己写在此情况下输出的内容,比较个性化。最后强烈建议 WordPress 官方将下一次升级中把这个兼容问题考虑进去。
-
新年新气象,博客换新衣2012年01月20日 -
Wordpress 我变我变我变变变2011年04月27日 -
Wordpress 自定义顶部图像2011年01月29日 -
给 Wordpress 主题添加个性化小工具2011年01月16日