我的代码来自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 . '" />';
}
由于
答案 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
参数。