2015-03-15 3 views
0

Я пытаюсь добавить какую-то особенность в плагиновую связь buddypress first-letter-avatar. Он назначает аватарную базу на первую букву имени пользователя, однако я бы хотел ее настроить. Я хочу, чтобы он также основывался на роде пользователя. Я хочу добавить строку $ gender в следующую функцию, я пытаюсь добавить $ gender в этот код, каким образом я могу достичь этого или где я должен посмотреть на этот код и начать его настраивать? оценить.Как добавить строку в функцию в этой ситуации php?

<?php 
 
private function choose_custom_avatar($username, $size, $alt = '', $gender){ 
 
\t \t $id=//get user_id, dont know how to get it yet 
 
\t \t $gender=bp_get_profile_field_data('Gender', $id);// 
 

 
\t \t // get picture filename (and lowercase it) from commenter name: 
 
\t \t //var_dump($username); 
 
\t \t $file_name = substr($username, $this->letter_index, 1); // get one letter counting from letter_index 
 
\t \t $file_name = strtolower($file_name); // lowercase it... 
 
\t \t // if, for some reason, the result is empty, set file_name to default unknown image: 
 
\t \t if (empty($file_name)){ 
 
\t \t \t $file_name = $this->image_unknown; 
 
\t \t } 
 

 
\t \t // create array with allowed character range (in this case it is a-z range): 
 
\t \t $allowed_chars = range('a', 'z'); 
 
\t \t 
 
\t \t // check if the file name meets the requirement; if it doesn't - set it to unknown 
 
\t \t if (!in_array($file_name, $allowed_chars)){ 
 
\t \t \t $file_name = $this->image_unknown; 
 
\t \t } 
 
\t \t 
 
\t \t 
 
\t \t 
 
\t \t // detect most appropriate size based on WP avatar size: 
 
\t \t if ($size <= 48 && $gender=='Female') $custom_avatar_size = '48'; 
 
\t \t else if ($size > 48 && $size <= 96 && $gender=='Female') $custom_avatar_size = '96'; 
 
\t \t else if ($size > 96 && $size <= 128 && $gender=='Female') $custom_avatar_size = '128'; 
 
\t \t else if ($size > 128 && $size <= 256 && $gender=='Female') $custom_avatar_size = '256'; 
 
\t \t else if ($size <= 48 && $gender=='Male') $custom_avatar_size = '1'; 
 
\t \t else if ($size > 48 && $size <= 96 && $gender=='Male') $custom_avatar_size = '2'; 
 
\t \t else if ($size > 96 && $size <= 128 && $gender=='Male') $custom_avatar_size = '3'; 
 
\t \t else if ($size > 128 && $size <= 256 && $gender=='Male') $custom_avatar_size = '4'; 
 
\t \t else $custom_avatar_size = '512'; 
 
\t 
 

 
\t \t // create file path - avatar_path variable will look something like this: 
 
\t \t // http://yourblog.com/wp-content/plugins/wp-first-letter-avatar/images/default/96/k.png): 
 
\t \t $avatar_uri = 
 
\t \t \t plugins_url() . '/' 
 
\t \t \t . dirname(plugin_basename(__FILE__)) . '/' 
 
\t \t \t . self::BPFLA_IMAGES_PATH . '/' 
 
\t \t \t . $this->avatar_set . '/' 
 
\t \t \t . $custom_avatar_size . '/' 
 
\t \t \t . $file_name . '.' 
 
\t \t \t . $this->images_format; 
 

 
\t \t // output the final HTML img code: 
 
\t \t return $this->output_img($avatar_uri, $size, $alt); 
 
\t } 
 
\t 
 

 

 
?>

ответ

1

Кажется мне, что вы пытаетесь передать переменную $gender в качестве параметра функции, а затем в строке 3 вы определяете, что очень изменчив в функции:

private function choose_custom_avatar($username, $size, $alt = '', $gender){ 
     $id=//get user_id, dont know how to get it yet 
     $gender=bp_get_profile_field_data('Gender', $id);// 

Это не способ сделать это. Вместо этого, передать переменную, скажем $gen в качестве параметра, а затем redifine переменную $gender в функции в зависимости от того, передается ли параметр пола или нет:

private function choose_custom_avatar($username, $size, $alt = '', $gen=null){ 
     $id=//get user_id, dont know how to get it yet 
     $gen !== '' ? $gender = $gen : $gender=bp_get_profile_field_data('Gender', $id); 

Таким образом, вам не придется менять код и он будет работать по-прежнему, если параметр $gen не передан.

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

  • Нет связанных вопросов^_^