我创建了3个导航菜单,根据用户的角色进行显示,因此我有一个用于访客用户,另一个用于批发,最后还有一个Hospitality导航菜单。
我试图根据登录时用户的角色来显示它们。所以访客一个在根本没有登录时显示,另外两个在分别登录到每个帐户时显示。我做了以下论证:
<?php
if ( is_user_logged_in('administrator') ) {?>
<?php wp_nav_menu( array( 'menu' => 'guest-menu' ) ); ?>
<?php
} else if ( is_user_logged_in('wholesale_customer') ) {?>
<?php wp_nav_menu( array( 'menu' => 'wholesale-menu' ) ); ?>
<?php
} else if ( is_user_logged_in('hospitality_customer') ) {?>
<?php wp_nav_menu( array( 'menu' => 'hospitality-menu' ) ); ?>
<?php
} else {?>
<?php wp_nav_menu( array( 'menu' => 'guest-menu' ) ); ?>
<?php
}
?>
我已经通过我正在使用的批发插件创建了批发和酒店用户帐户,用户的密钥是:wholesale_customer
&hospitality_customer
,但不管客人菜单上显示什么?所以我的猜测是,它要么没有通过第一个论点,要么只是跳到了最后。
试试这个,
$user = wp_get_current_user();
if ( in_array( 'wholesale_customer', (array) $user->roles ) {
wp_nav_menu( array( 'menu' => 'wholesale-menu' ) );
} else if ( in_array( 'hospitality_customer', (array) $user->roles ) ) {
wp_nav_menu( array( 'menu' => 'hospitality-menu' ) );
} else {
wp_nav_menu( array( 'menu' => 'guest-menu' ) );
}
感谢上面的人和其他寻找答案的人,请看看我是来实现工作结果的:
<?php
global $current_user;
get_currentuserinfo();
switch (true) {
case ( user_can( $current_user, "administrator") ):?>
<?php wp_nav_menu( array( 'menu' => 'guest-menu' ) );
break;
case ( user_can( $current_user, "wholesale_customer") ):?>
<?php wp_nav_menu( array( 'menu' => 'wholesale-menu' ) );
break;
case ( user_can( $current_user, "hospitality_customer") )?>
<?php wp_nav_menu( array( 'menu' => 'hospitality-menu' ) );
break;
default:
wp_nav_menu( array( 'menu' => 'guest-menu' ) );
break;
}
?>
更新:
get_currentuserinfo()
自4.5版本以来一直不推荐使用,现在建议使用wp_get_current_user
。