如果使用熟悉,wordpress的菜单栏设计在开发中是一个很方便的工具。这篇文详细讲wordpress中如何对不同角色显示不同的菜单栏。
1.注册不同的菜单,在functions.php中注册菜单
//注册菜单
if(!function_exists('specs_register_nav_menu')){
function specs_register_nav_menu() {
register_nav_menus(
array(
'primary' => '头部主菜单', // Register the Primary menu
// Copy and paste the line above right here if you want to make another menu,
// just change the 'primary' to another name
'second' => '头部学生菜单',
)
);
}
}
add_action( 'after_setup_theme', 'specs_register_nav_menu' );
2.wordpress后台设置
wordpress 中进入外观》菜单,可以看到菜单编辑
红色椭圆部分你可以选择对哪个菜单进行编辑,当然你也可以创建新的菜单进行编辑。编辑的方法就不说了,拖来拖去而已。编辑完后在下面的红色框位置勾选你所编辑的菜单要放入你刚才代码注册的菜单中的哪个。当时就是在这个问题卡住 了,注册了的菜单与编辑的菜单有什么关系,菜单设置又是起到什么作用。思考了挺久之后得出一结论,这里提供参考,不保证完全正确。
思考:注册的菜单和编辑的菜单有什么关系?菜单设置又是干什么的?答:其实注册的菜单可以比喻为向wordpress注册了两个容器,而你编辑的两个菜单可以说是你做好的两个东西,那么菜单设置就是将你编辑的两个东西放入你注册的两个容器中。当然,编辑的菜单要放入你注册的哪个容器就看你怎么勾选了。这里我将首页这个菜单放入头部主菜单这个容器中,因此椭圆红色框中会出现 首页(头部主菜单) 即wordpress提醒我首页这个菜单已经放入头部主菜单中了。新手领悟,不正确希望能得到纠正。
3.引用
在设置好菜单后,就要在header.php中判断是什么角色然后进行菜单选择
首先在functions.php中写好角色判断函数:
//判断是否是subscriber,如果需要判断其他角色请自行添加
function check_for_user(){
global $current_user;
$user_roles = $current_user->roles;
if (!strcmp($user_roles[0], "subscriber")) {
return 1;
}
}
然后在header.php中进行菜单选择:
if (check_for_user()) {
if ( has_nav_menu( 'second' ) ) {
wp_nav_menu( array('theme_location' => 'second','container' => '','container_class' => '','container_id' => '','menu_class' => 'nav navbar-nav','items_wrap' => '<ul class="%2$s">%3$s</ul>','walker' => new Bootstrap_Walker )); //学生主菜单
}else{
echo '<ul class="nav navbar-nav">';
//wp_list_pages('sort_column=menu_order&title_li=');
wp_list_categories('sort_column=menu_order&title_li=');
echo '</ul>';
}
}else{
if ( has_nav_menu( 'primary' ) ) {
wp_nav_menu( array('theme_location' => 'primary','container' => '','container_class' => '','container_id' => '','menu_class' => 'nav navbar-nav','items_wrap' => '<ul class="%2$s">%3$s</ul>','walker' => new Bootstrap_Walker )); //教师、管理员主菜单
}else{
echo '<ul class="nav navbar-nav">';
//wp_list_pages('sort_column=menu_order&title_li=');
wp_list_categories('sort_column=menu_order&title_li=');
echo '</ul>';
}
}
如果还有什么其他问题就到谷歌上看看吧,新手一般遇到的问题谷歌都解决得了!!