简单描述一下这样的需求:比如某博客需要建立一个次级的专题页面(比如小站想要建立一个关于志愿者的页面),那么只需要在主题文件夹下新建一个page-special.php文件,并将page.php的所有内容copy到其中进行对应修改即可。
但是修改后我们发现一个问题啊,就是打开次级页面可以看到布局确实达到我们的要求了,但是这菜单还是和主页面一样的啊,这就需要自定义第二个菜单 ,让我们需要的页面显示第二个菜单啦。
步骤如下:
一、首先确定自己的主题是否支持自定义菜单
一般来说wp3.0 推出以后的主题都是支持自定义菜单的。小站用的主题悲崔的不属于其中,所以只好手动修改啦。
1)打开主题的function.php 添加以下内容
1 2 3 4 | // This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'primary' => __( 'Primary Navigation', 'twentyten' ), ) ); |
2)修改导航代码,一般导航代码在function.php 或header.php中,为下列样式
1 | <!--?php wp_list_categories('sorderby=name&amp;depth=4&amp;title_li='); ?--> |
将其修改为
1 | <!--?php wp_nav_menu( 'id=navbar&amp;menu_class=primary' ); ?--> |
OK 去后台看看自定义菜单吧。
二、下面要为主题添加多个菜单,步骤如下
1)修改function.php
在function.php中寻找如下语句
1 | register_nav_menus |
有的话修改为如下
1 2 3 4 5 6 7 | // 自定义菜单 register_nav_menus( array( 'primary' => __( '导航自定义菜单' ), 'special' => __( '页角自定义菜单' ) ) ); |
其中 primary和special可以自定义,不过需要与下面的名称相同
2) 找到header.php 查找
1 | wp_list_pages 或 wp_list_categories 或 wp_nav_menu |
并修改为类似如下的形式
1 | <!--?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?--> |
或
1 | <!--?php wp_nav_menu( array( 'theme_location' => 'special' ) ); ?--> |
这两个函数分别为调用不同的菜单,不可以同时用哦。另一个做啥用呢?当然是放到我们专用的页面啦。
下面是方法
三、新建header文件
新建 header-special.php copyheader.php内的所有内容到其中
修改上面改好了的语句
1 | <!--?php wp_nav_menu( array( 'theme_location' => 'primary' ) ); ?--> |
用那个菜单就改成那个,我们这里将 primary改为special,就是这个页面使用第二个菜单。
四、回到我们新建并修改好的page-special.php 中
搜索 get_header 函数并将其改为 get_header(special)
进入后台页面管理,修改我们要应用的页面使用page-name 模板,OK 大功告成
示例页面为最近刚做的协会网页,可以看到其主页和子页面CAFIC使用不同的菜单和头文件,好了,诸位试一下吧~
参考资料&鸣谢
知更鸟:为主题添加多个WordPress3.0自定义菜单 WordPress 3.0来了,你的主题准备好了吗?
上岸的QQ鱼:WordPress主题函数get_header()的详细介绍与用法
本文遵守署名-非营利性使用-相同方式共享协议,转载请保留本段:冰丝带雨 » 让Wordpress不同页面显示不同菜单