【发布时间】:2014-03-06 14:39:16
【问题描述】:
我正在尝试根据用户角色显示两个不同的菜单。
我已经使用此代码(在functions.php中)设置了一个名为“客户”的新角色:
add_role( 'client', 'Client', array(
'read' => true,
)
);
我有两个不同的菜单使用这个代码(在functions.php中):
function register_my_menus() {
register_nav_menus(
array(
'client-navigation' => __( 'Client Navigation' ),
'staff-navigation' => __( 'Staff Navigation' ),
)
);
}
add_action( 'init', 'register_my_menus' );
这是我试图用来调用客户端导航或员工导航的代码(在 header.php 中):
<?php
if (current_user_can('client')){
//menu for client role
wp_nav_menu( array('theme-location' => 'client-navigation' ));
}else{
//default menu
wp_nav_menu( array('theme-location' => 'staff-navigation' ));
}
?>
我还尝试在 wp_nav_menu 之前添加“echo”并将 theme-location 更改为 menu 并使用菜单名称,但它始终显示 staff-navigation 菜单。
【问题讨论】:
-
你能解释一下什么不起作用吗?你没看到菜单吗?两次相同的菜单?您是否在两个菜单中都添加了菜单项?您是否以客户身份登录?我相信
current_user_can接受的是能力而不是角色。 -
不,它总是显示人员导航菜单,我在每个菜单中有不同的链接,我使用两个浏览器(1 个管理员登录和 1 个客户端登录)进行测试
标签: php wordpress if-statement wordpress-theming