【WordPress】为Inove主题增加自定义菜单功能的支持

    Inove主题晴枫修改版已增加了对自定义菜单功能的支持,点击这里查看。

    WordPress 3.0推出已有三个多月了,关于给博客主题增加3.0新功能——自定义菜单支持的文章也已经很多了,按着操作下来感觉还是有一些地方没有写得很清楚,于是也来整理一笔。

    这两天无意中,看到后台管理》外观》目录界面有如下提示:

    当前的主题不提供原生的自定义目录支持。您可以用“自定义目录”小工具将您在这里创建的目录添加至主题的侧边栏。

    英文版提示是

    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.

    想想还是给博客主题增加这个功能的支持。

    记录下修改步骤:

    1、修改主题的functions.php文件,末尾增加如下代码:

    <?php
    if (function_exists('register_nav_menus')){
    register_nav_menus( array(
    'menubar' => __('Inove Menubar', 'inove')
    ) );
    }
    ?>

    说明:此段代码意为注册菜单位置。menubar为位置标识,自定义,对应到菜单设置界面的主题位置,如下图;Inove Menubar是显示的描述文字。array数组便是在主题中使用的菜单位置,可以指定多个元素来使得主题中同时使用多个自定义菜单。更多关于 register_nav_menus 函数的使用可参看官网说明文档

    自定义菜单设置

    自定义菜单设置

    2、增加主题配置项(即后台管理》外观》当前主题选项)对自定义菜单功能的可选的支持,各个主题修改方法会有不同;当然如果主题没有配置项,可略过此步。

    iNove主题配置项修改位于functions.php文件中,涉及修改代码较多,不细细罗列,有兴趣修改的同学模仿原有的配置项进行添加。只是中间如有中文的话需要用__()或_e()函数替换下,然后在languages下的对应语言文件中增加条目,语言文件的编辑用到WordPress主题插件语言包制作工具

    3、修改主题菜单项的输出代码

    Inove主题菜单项对应代码位于templates/header.php第30行处,如下,根据自己的需要进行修改或替换:

    <?php
    if($options['menu_type'] == 'categories') {
    wp_list_categories('title_li=0&orderby=name&show_count=0');
    } else {
    wp_list_pages('title_li=0&sort_column=menu_order');
    }
    ?>

    自定义菜单的输出使用如下代码 :

    wp_nav_menu(array('theme_location' => 'menubar'));

    说明:以上函数是将menubar对应的菜单项转换为菜单列表输出,输出代码类似如下:

    <div class="menu-xxx-container"><ul id="menu-xxx" class="menu"><li id="menu-item-xxx" class="menu-item menu-item-type-custom menu-item-xxx"><a href="xxx">xxx</a></li>
    <li id="menu-item-xxx" class="menu-item menu-item-type-post_type menu-item-xxx"><a href="xxx">xxx</a></li>
    </ul></div>

    由于Inove主题菜单设计原因,不希望输出菜单代码中的div标签和ul标签,于是采用了如下代码:

    echo str_replace("</ul></div>", "", ereg_replace("<div[^>]*><ul[^>]*>", "", wp_nav_menu(array('theme_location' => 'menubar', 'echo' => false)) ));

    即通过正则表达式的替换,去掉div标签和ul标签,只留下li标签。

    更多关于 wp_nav_menu 函数的使用请参考官方说明文档

    4、添加、配置菜单

    在WordPress后台管理》外观》目录中进行设置,如前面的图所示,增加菜单、添加菜单项、将菜单选定到主题的菜单位置上。如菜单位置处不选择任何菜单,主题输出时会将页面列表作为默认菜单列表输出。

    p.s. 自定义菜单虽然灵活,但就效率而言不及直接输出页面列表或是分类列表,各位看官自己选择。

    [完毕]

    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自 芸路拾光, 原文地址《【WordPress】为Inove主题增加自定义菜单功能的支持
    标签:
    分享:

已经有36 条评论抢在你前面了~

  1. 沙发
    N博客 2013年11月27日 下午6:15

    能加你QQ吗?
    还有很多问题向你请教
    我的QQ:157082290
    我加你QQ你一直没审核通过!

  2. 板凳
    N博客 2013年11月18日 下午2:17

    为什么按照你的文章做了
    还是跟你站的导航样式不一样呢?
    下载inove.1.4.6_mivkit.com_1.4
    你的修改包也不显示呢?

  3. 地板
    发生的 2012年5月8日 上午7:40

    狗日的第2步怎么改啊配置项啊,又不说完,憋死人啊,大哥详细的发我邮箱吧[email protected]。改天提两近猪肉登门拜谢!

  4. 4楼
    行畔博客 2012年4月25日 下午8:53

    灰常不错~

  5. 5楼
    suoniker 2012年3月7日 下午2:12

    代码很有用,没修改之前inove用自定义菜单后的下拉菜单会错位,用了LZ代码后问题解决了

  6. 6楼
    hanyuxia 2011年11月26日 下午9:12

    你好,改了半天,还不行,你能否把已经修改好的,放出来,方便我们直接替换,谢谢

  7. 7楼
    暗暗 2011年7月20日 下午3:49

    这个不错 先收藏了,等有时间就改刚玩wp没几天
    有空看看我的 inove主题 修改,一起多交流交流哈
    http://www.anzhilife.com/blog
    可以的话加一下友链

  8. 8楼
    西安seo 2011年6月9日 下午5:27

    我正在找这个东西,我在用inoe的另外一个主题,回去试试看可以不。

  9. 9楼
    重庆体检 2011年3月15日 上午2:36

    怎么没下载地址呢

  10. 10楼
    gutian 2010年12月4日 下午9:01

    谢谢了,我搞成功了。

  11. 11楼
    dianaluna 2010年12月4日 下午7:43

    我用的INOVE主题,用的分类做导航栏。但是想在导航栏里加上超链接
    自定义导航菜单可以实现。但是我只能看懂你的第一步和第四步。。。第2步和第三步看不懂。。。
    能解释下么?比如“主题配置项对自定义菜单功能的可选的支持”是指什么?代码放哪里。。谢谢

  12. 12楼
    一米阳光 2010年10月20日 下午9:17

    博主,你好!我是google上搜索进来的,因为我现在用的主题也是不提供原生的自定义菜单支持的,我仔细看了你的教程,但是还是不是很明白怎么做,我对代码不是很熟悉。但是我非常喜欢那个主题,所以我想发我的主题给你,让你帮我弄一下,请问可以吗?如果可以的话,麻烦回我一封邮件,非常感谢!

  13. 13楼
    x 2010年10月14日 下午8:55

    我看不懂,加了前一段代码,可是没有 侧边栏菜单啊?

  14. 14楼
    杨董 2010年10月8日 下午5:13

    用分类当目录 效果不错

  15. 15楼
    简单描述 2010年9月21日 下午12:39

    恩,又学习了。。。还真不会弄,有机会试试。