让Wordpress不同页面显示不同菜单

简单描述一下这样的需求:比如某博客需要建立一个次级的专题页面(比如小站想要建立一个关于志愿者的页面),那么只需要在主题文件夹下新建一个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;amp;depth=4&amp;amp;title_li='); ?-->

将其修改为

1
<!--?php wp_nav_menu( 'id=navbar&amp;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' =&gt; __( '导航自定义菜单' ),
'special' =&gt; __( '页角自定义菜单' )
)
);

其中 primary和special可以自定义,不过需要与下面的名称相同

2) 找到header.php  查找
1
wp_list_pages 或 wp_list_categories 或  wp_nav_menu

并修改为类似如下的形式

1
<!--?php  wp_nav_menu( array( 'theme_location' =&gt; 'primary' ) ); ?-->

1
<!--?php  wp_nav_menu( array( 'theme_location' =&gt; 'special' ) ); ?-->

这两个函数分别为调用不同的菜单,不可以同时用哦。另一个做啥用呢?当然是放到我们专用的页面啦。

下面是方法

三、新建header文件

新建 header-special.php copyheader.php内的所有内容到其中

修改上面改好了的语句

1
<!--?php  wp_nav_menu( array( 'theme_location' =&gt; '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不同页面显示不同菜单

赞 (1)