【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_witmax.cn_1.4
    你的修改包也不显示呢?

    [回复]

    晴枫

    晴枫 回复:

    @N博客, 我的博客没启用自定义菜单功能

    [回复]

    N博客 回复:

    @晴枫, 那介绍一下你的博客导航条出的连接如何添加的吗?

    [回复]

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

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

    [回复]

  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

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

    [回复]

    晴枫

    晴枫 回复:

    @hanyuxia, 文章的第一行有修改后的主题链接

    [回复]

  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

    谢谢了,我搞成功了。

    [回复]

    晴枫

    晴枫 回复:

    @gutian, 不错,这功能挺好用的

    [回复]

    gutian 回复:

    @晴枫, 今天我发现同一个导航菜单有时出现两个。不知道怎么回事。

    [回复]

    晴枫

    晴枫 回复:

    @gutian, 不解 调试一下看看

    [回复]

    gutian 回复:

    @晴枫, 现在是ie没有菜单,火狐和google中正常。
    去除div标签和ul标签是在functions.php中改动吗?

    [回复]

    晴枫

    晴枫 回复:

    @gutian, 在你输出菜单的地方,iNove主题是在templates/header.php文件里,文中有说明;建议用火狐查看这个页面,IE下部分代码没显示出来

    [回复]

    gutian 回复:

    @晴枫, 修改好了。

    [回复]

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

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

    [回复]

    晴枫

    晴枫 回复:

    @dianaluna, 在外观》当前主题选项里不是可以对主题进行设置吗 inove原始主题只支持把页面列表作为菜单和把分类列表作为菜单,第2步就是修改主题文件增加一个配置项,将自定义菜单作为菜单
    第3步的代码放在主题菜单的位置,不同的主题代码具体位置不同,需要自己找
    INove主题的话你可以下载我修改好的版本,在文首有链接

    [回复]

    dianaluna 回复:

    @晴枫,
    谢谢,先下下来学习

    [回复]

    dianaluna 回复:

    @dianaluna,
    晕,要是用你的模版的话,我自己前面修改的好多都直接覆盖了。。覆盖之后又得往回改。。
    请问能直接告诉我是在哪里修改代码吗?非常感谢,我的网站是yue366.com

    [回复]

    晴枫

    晴枫 回复:

    @dianaluna, template/header.php文件第30行开始的地方

    [回复]

    dianaluna 回复:

    @晴枫,
    HAHA,原来这里是这里的HEADER在起作用!!不过我把你的代码加好后采单栏还是只有两个选项。不过我要的功能只是在导航栏里添加超级连接,所以直接加上链接名称 就实现了。。

    非常感谢博主迅速的回复。小小的建议:能否把修改步骤详细点?这样就更容易懂一些

    [回复]

    晴枫

    晴枫 回复:

    @dianaluna, 稍微补充一点说明,更新了原文

    [回复]

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

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

    [回复]

    晴枫

    晴枫 回复:

    @一米阳光, 可以发过来帮你看看

    [回复]

    一米阳光 回复:

    @晴枫,
    已经发到你邮箱了,麻烦帮忙看看,谢谢!

    [回复]

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

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

    [回复]

    晴枫

    晴枫 回复:

    @x, 上面的代码不会直接在侧边栏显示菜单,只是提供了主题的支持 后台管理》外观》目录界面 中自定义菜单的支持;你说的侧边栏菜单可以用 外观》小工具 中的链接表实现

    [回复]

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

    用分类当目录 效果不错

    [回复]

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

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

    [回复]

无觅相关文章插件,快速提升流量