在条件中添加else

时间:2016-03-03 01:28:10

标签: php

我的代码来自wordpress主题,我试图改变以显示男/女默认头像。到目前为止,我有这个,这很好,但我不知道如何添加其他条件,我已经尝试了几个小时没有运气。

这是我的男性代码。

    if (isset($default[0]) && $gender == 'man') {
        $imagemale = themex_resize($default[0], $size, $size, true, true); 
    }
    return  '<img src="' . $imagemale . '" class="avatar" width="' . $size . '" alt="' . $alt . '" />';
}

由于

2 个答案:

答案 0 :(得分:1)

最终有效的代码是......

public static function getAvatar($avatar, $user, $size, $default, $alt) {
    if(isset($user->user_id)) {
        $user=$user->user_id;
    }

    $avatar_id=ThemexCore::getUserMeta($user, 'avatar');
    $default=wp_get_attachment_image_src( $avatar_id, 'preview');
                        if(ThemexCore::getUserMeta($user, 'gender')=='woman') {
              $image=THEME_URI.'images/default-female.jpg';
                        } else {
              $image=THEME_URI.'images/default-male.jpg';
                        }

    if(isset($default[0])) {
        $image=themex_resize($default[0], $size, $size, true, true);
    }

    return '<img src="'.$image.'" class="avatar" width="'.$size.'" alt="'.$alt.'" />';
}

此解决方案来自脚本作者。感谢您尝试帮助CoderCreative。

答案 1 :(得分:0)

假设$ default是一组默认的头像图像(0是男性,1是女性),你会想要这样的东西:

$tag = '';
$key = $gender=='man' ? 0 : 1;

if (isset($default[$key])) {
    $image = themex_resize($default[$key], $size, $size, true, true); 
    $tag = '<img src="'.$image.'" class="avatar" width="'.$size.'" alt="'.$alt.'" />';
}

return $tag;

当然,如果有更多性别选择,或者存在默认回退,则可以进一步改进。

修改

根据以下评论中的链接,完整功能如下:

public static function getAvatar($avatar, $user, $size, $default, $alt) {

    if(isset($user->user_id)) {
        $user=$user->user_id;
    }

    $gender=ThemexCore::getUserMeta($user, 'gender');
    $avatar_id=ThemexCore::getUserMeta($user, 'avatar');
    $default=wp_get_attachment_image_src( $avatar_id, 'preview');                            
    $imagemale=THEME_URI.'images/default-male.jpg';
    $imagefemale=THEME_URI.'images/default-female.jpg';

    if(isset($default[0]) && $gender == 'man') {
        $imagemale=themex_resize($default[0], $size, $size, true, true);  
        $result='<img src="'.$imagemale.'" class="avatar" width="'.$size.'" alt="'.$alt.'" />'; 
    }else if(isset($default[0]) && $gender == 'woman') {
        $imagefemale=themex_resize($default[0], $size, $size, true, true); 
        $result='<img src="'.$imagefemale.'" class="avatar" width="'.$size.'" alt="'.$alt.'" />';
    }

    return $result;

}

这比简单地添加else语句更复杂。试试这个:

public static function getAvatar($avatar, $user, $size, $default, $alt) {

    if(isset($user->user_id)) {
        $user=$user->user_id;
    }

    $avatar_id=ThemexCore::getUserMeta($user, 'avatar');
    $unique=wp_get_attachment_image_src( $avatar_id, 'preview');

    if(isset($unique[0])) {
        $url = $unique[0];
    } else {
        $gender=ThemexCore::getUserMeta($user, 'gender');
        if($gender == 'man') {
            $url = THEME_URI.'images/default-male.jpg';
        } elseif($gender == 'woman') {
            $url = THEME_URI.'images/default-female.jpg';
        } 
    }

    $image=themex_resize($url, $size, $size, true, true);  
    return '<img src="'.$image.'" class="avatar" width="'.$size.'" alt="'.$alt.'" />'; 

}

请注意;如果用户已经具有化身,则该功能将返回该化身(如果女性用户具有男性化身;您将看到男性化身),如果没有找到该用户的现有化身,则该功能现在将默认为性别特定的一个由你指定。另请注意,默认值现在已硬编码到您的函数中,因此不再使用$default参数。