WordPress菜单取决于用户角色

时间:2016-09-26 11:13:09

标签: php wordpress

我根据用户的角色创建了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但无论它显示客人菜单是什么?所以我的猜测是它要么没有超过第一个参数,要么只是跳到最后。

2 个答案:

答案 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