2016-03-03 5 views
-2

У меня есть код здесь из темы Wordpress, которую я пытаюсь изменить, чтобы показать аватар по умолчанию для мужчин и женщин. У меня есть это до сих пор, и это прекрасно работает, но я не уверен, как добавить условие else, я пробовал несколько часов без везения.Добавление другого состояния в состояние

Вот мой код для мужчин.

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

Как вы можете получить ссылку на изображение? он находится в $ default [0]? – olibiaz

+0

Что вы хотите проверить, является ли пол мужчиной или женщиной? Вы должны отформатировать свой код при публикации, это трудно прочитать, как есть. – chris85

+0

Итак, что вы пробовали? Структуры управления принципиально просты, но без вашей попытки мы не можем помочь вам исправить ваш код! –

ответ

0

Предполагая, что $ по умолчанию представляет собой набор изображений аватар по умолчанию (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; 

Конечно , если есть больше вариантов выбора для пола, или если есть резерв по умолчанию, это может быть улучшено дальше.

EDIT

По вашей ссылке в комментариях ниже, полная функция выглядит следующим образом:

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; 

} 

Это гораздо сложнее, чем просто добавление в операторе еще. Попробуйте следующее:

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 больше не используется.

+0

CoderCreative, Пол хранится как «женщина» и «человек» в базе данных. –

+0

Что такое $ default? если есть только один элемент массива (с индексом 0), то вы, вероятно, имеете только один аватар по умолчанию; мужской.Проверьте, записав следующий код перед линией «возврат»; print_r ($ по умолчанию); выход; – CoderCreative

+0

default - $ default = wp_get_attachment_image_src ($ avatar_id, 'preview'); –

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.

Смежные вопросы