在这种情况下,如何将字符串添加到函数中 php


How can I add a string into function in this situation php?

我正在尝试将一些功能添加到插件调用buddypress首字母头像中。它根据用户名的第一个字母分配头像,但是,我想自定义它。我希望它也基于用户名的性别。我想在以下函数中添加一个字符串$gender,我正在尝试将$gender添加到此代码中,我可以通过什么方式实现这一目标,或者我应该在哪里查看此代码并开始自定义它?欣赏。

<?php
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);//
		// get picture filename (and lowercase it) from commenter name:
		//var_dump($username);
		$file_name = substr($username, $this->letter_index, 1); // get one letter counting from letter_index
		$file_name = strtolower($file_name); // lowercase it...
		// if, for some reason, the result is empty, set file_name to default unknown image:
		if (empty($file_name)){
			$file_name = $this->image_unknown;
		}
		// create array with allowed character range (in this case it is a-z range):
		$allowed_chars = range('a', 'z');
		
		// check if the file name meets the requirement; if it doesn't - set it to unknown
		if (!in_array($file_name, $allowed_chars)){
			$file_name = $this->image_unknown;
		}
		
		
		
		// detect most appropriate size based on WP avatar size:
		if ($size <= 48 && $gender=='Female') $custom_avatar_size = '48';
		else if ($size > 48 && $size <= 96 && $gender=='Female') $custom_avatar_size = '96';
		else if ($size > 96 && $size <= 128 && $gender=='Female') $custom_avatar_size = '128';
		else if ($size > 128 && $size <= 256 && $gender=='Female') $custom_avatar_size = '256';
		else if ($size <= 48 && $gender=='Male') $custom_avatar_size = '1';
		else if ($size > 48 && $size <= 96 && $gender=='Male') $custom_avatar_size = '2';
		else if ($size > 96 && $size <= 128 && $gender=='Male') $custom_avatar_size = '3';
		else if ($size > 128 && $size <= 256 && $gender=='Male') $custom_avatar_size = '4';
		else $custom_avatar_size = '512';
	
		// create file path - avatar_path variable will look something like this:
		// http://yourblog.com/wp-content/plugins/wp-first-letter-avatar/images/default/96/k.png):
		$avatar_uri =
			plugins_url() . '/'
			. dirname(plugin_basename(__FILE__)) . '/'
			. self::BPFLA_IMAGES_PATH . '/'
			. $this->avatar_set . '/'
			. $custom_avatar_size . '/'
			. $file_name . '.'
			. $this->images_format;
		// output the final HTML img code:
		return $this->output_img($avatar_uri, $size, $alt);
	}
	
?>

在我看来,

您正在尝试将$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作为参数,然后根据是否传递性别参数重新定义函数中的$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 参数,它将像以前一样工作。