customization - switch combined with if statement

I am not able to get this running. What i commented out is running like it should, but i want to use the switch for spec

I am not able to get this running. What i commented out is running like it should, but i want to use the switch for specific user roles...

add_action( 'um_members_just_after_name', 'my_members_after_user_name', 10, 1 );
function my_members_after_user_name( $user_id ) {

    $user = new WP_User( $user_id );
    /*
    if( $user->roles[0] == 'um_musiker' ) {
        // update_user_meta( $user_id, 'um_reihung', '40' );
        echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';  
    }
    */

    if( $user->roles[0] == $value ) {
        switch ( $value ) {
        case "um_musiker":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';
            break;
        case "um_musiker_bronze":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Bronze Status"></i>';
            break;
        case "um_musiker_silber":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Silber Status"></i>';
            break;
        }
    }
}

I am not able to get this running. What i commented out is running like it should, but i want to use the switch for specific user roles...

add_action( 'um_members_just_after_name', 'my_members_after_user_name', 10, 1 );
function my_members_after_user_name( $user_id ) {

    $user = new WP_User( $user_id );
    /*
    if( $user->roles[0] == 'um_musiker' ) {
        // update_user_meta( $user_id, 'um_reihung', '40' );
        echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';  
    }
    */

    if( $user->roles[0] == $value ) {
        switch ( $value ) {
        case "um_musiker":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';
            break;
        case "um_musiker_bronze":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Bronze Status"></i>';
            break;
        case "um_musiker_silber":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Silber Status"></i>';
            break;
        }
    }
}
Share Improve this question asked Mar 29, 2019 at 9:25 LovinQuaQuaLovinQuaQua 833 silver badges18 bronze badges
Add a comment  | 

3 Answers 3

Reset to default 0

You do not need to use pass the $value in a switch statement, Just pass there $user->roles[0] instead of $value and after that your condition.

Add below code and let me know your answer towards it.

add_action( 'um_members_just_after_name', 'my_members_after_user_name', 10, 1 );
function my_members_after_user_name( $user_id ) {

    $user = new WP_User( $user_id );
    /*
    if( $user->roles[0] == 'um_musiker' ) {
        // update_user_meta( $user_id, 'um_reihung', '40' );
        echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';  
    }
    */


        switch ( $user->roles[0] ) {
        case "um_musiker":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';
            break;
        case "um_musiker_bronze":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Bronze Status"></i>';
            break;
        case "um_musiker_silber":
            echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Silber Status"></i>';
            break;
        }

}

Checking $user->roles[0] is not an appropriate way to check if a user has a role. Users can have multiple roles, so this needs to be taken into account:

$user  = get_userdata( $user_id );
$roles = $user->roles;

if ( in_array( 'um_musiker', $roles ) {
    echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';
    return;
}

if ( in_array( 'um_musiker_bronze', $roles ) {
    echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Bronze Status"></i>';
    return;
}

if ( in_array( 'um_musiker_silber', $roles ) {
    echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Silber Status"></i>';
    return;
}

I just write new $value = $user->roles[0]; variable and check $user in if condition. I hope it'll help you out. Thanks

add_action( 'um_members_just_after_name', 'my_members_after_user_name', 10, 1 );
function my_members_after_user_name( $user_id ) {

  $user = new WP_User( $user_id );
  /*
  if( $user->roles[0] == 'um_musiker' ) {
    // update_user_meta( $user_id, 'um_reihung', '40' );
    echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';  
  }
  */

  $value = $user->roles[0];

  if( $value ) {
    switch ( $value ) {
    case "um_musiker":
        echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Kein Status"></i>';
        break;
    case "um_musiker_bronze":
        echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Bronze Status"></i>';
        break;
    case "um_musiker_silber":
        echo '<i class="um-verified um-icon-checkmark-circled um-tip-s" title="Silber Status"></i>';
        break;
    }
  }
}

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745646941a4638025.html

相关推荐

  • customization - switch combined with if statement

    I am not able to get this running. What i commented out is running like it should, but i want to use the switch for spec

    3小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信