最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

customization - switch combined with if statement

matteradmin7PV0评论

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;
    }
  }
}
Post a comment

comment list (0)

  1. No comments so far