WordPress菜单取决于用户角色


WordPress menu depending on user role

我创建了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