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 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;
        }
    }
}

Topic switch Wordpress

Category Web


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;
}

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;
        }

}

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;
    }
  }
}

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.