我试图根据用户角色显示两个不同的菜单。
我使用以下代码(在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” 并将主题位置更改为菜单, 并使用菜单名称, 但它始终显示人员导航菜单。
#1要使用current_user_can, 你应该添加自己的自定义功能。
无需执行此操作, 而是在寻找角色时, 从此处改编的以下功能可以完成工作:
function check_for_clients() {
global $current_user;
$user_roles = $current_user->
roles;
$user_role = array_shift($user_roles);
return ($user_role == 'client');
}
【不同用户角色的不同菜单】然后在你的header.php文件中(请注意, 你在theme_location中有一个错字):
if ( check_for_clients() ){
wp_nav_menu( array('theme_location' =>
'client-navigation' ));
} else {
wp_nav_menu( array('theme_location' =>
'staff-navigation' ));
}
推荐阅读
- WordPress上不同页面的不同侧边栏
- 检测文件是否存在于wordpress主题中()
- CSS下拉菜单未正确对齐
- Hive入门之数据类型
- 网络编程(part11)--socket模块方法及socket套接字属性
- 网络编程(part7)--网络主机/IP地址/域名/端口号
- 《多元统计分析》学习笔记之聚类分析
- 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
- HTML基础(part7)--常用标签之超链接标签