我根据用户的角色创建了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 and Hospitality用户帐户,并且用户的密钥为:wholesale_customer
&amp; hospitality_customer
但无论它显示客人菜单是什么?所以我的猜测是它要么没有超过第一个参数,要么只是跳到最后。
答案 0 :(得分:2)
试试这个,
$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' ) );
}
答案 1 :(得分:1)
感谢上面的人以及寻找答案的其他人,请看看我是谁来实现工作结果:
<?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;
}
?>
更新:
自版本4.5起, get_currentuserinfo()
has been deprecated,现在建议改为使用wp_get_current_user
。