Почему я не могу использовать bp_core_fetch_avatar() в теме после добавления фильтра в плагин, wordpress buddypress?

После того, как я выполнил приведенный ниже код add_filter в первом плагине, я не могу использовать bp_core_fetch_avatar() во втором плагине или в теме, он отображает один и тот же аватар для каждого пользователя, почему? Как я могу это исправить? get_avatar может отображать другую базу аватара для пользователя, за исключением того, что он не может распознать $gender, который я создаю в плагине, который скажет, является ли он женщиной или мужчиной, поэтому аватар будет назначать базу по полу. Я пытаюсь передать какой-то параметр, например $gender, который я создал в плагине, поэтому я думаю, что должен использовать bp_core_fetch_avatar(), кстати, может ли get_avatar передать параметр из плагина? Я знаю get_avatar($id, $size, $default, $alt). В любом случае, я хочу знать, почему bp_core_fetch_avatar() выводит один и тот же аватар для каждого пользователя после добавления фильтра, я уже добавляю 'item_id'=>"$id". Спасибо

           <?php
          add_filter('bp_core_fetch_avatar',array($this,'set_buddypress_avatar'), 10, 1);

       ?>
<?php
public function set_buddypress_avatar($html_data = ''){

		$html_doc = new DOMDocument();
		$html_doc->loadHTML($html_data);
		$image = $html_doc->getElementsByTagName('img');
		foreach($image as $data) {
			$original_image = $data->getAttribute('src');
			$size = $data->getAttribute('width');
			$alt = $data->getAttribute('alt');
		    
			if (stripos($alt, 'Profile picture of ') === 0){ // if our alt attribute has "profile picture of" in the beginning...
				$name = str_replace('Profile picture of ', '', $alt);
			   
			} else if (stripos($alt, 'Profile photo of ') === 0){ // or profile photo of...
				$name = str_replace('Profile photo of ', '', $alt);
			    
			} else { // if there is some problem - just assign alt to name
				$name = $alt;
			    
			}
		}

?>


person conan    schedule 16.03.2015    source источник


Ответы (1)


Я хочу знать, почему bp_core_fetch_avatar() повторяет один и тот же аватар для каждого пользователя после добавления add_filter

Потому что вы добавили фильтр к основной функции BP. Попробуйте удалить фильтр после того, как закончите с ним в своем классе.

remove_filter#Example

person shanebp    schedule 17.03.2015
comment
Вы предлагаете мне удалить фильтры? Я вот запутался, если я уберу фильтры, то я потеряю те функции, которые добавляю add_filter, да? Но мне все еще нужна функция add_filter. спасибо за ваше время, я попробую remove_filter позже, и посмотрим, смогу ли я сделать аватар и все еще иметь функцию add_filters - person conan; 17.03.2015