为什么我在插件,wordpress buddypress中添加过滤器后,无法在主题中使用bp_core_fetch_avatar()?

时间:2015-03-16 21:42:12

标签: php wordpress buddypress

我在第一个插件中执行下面的add_filter代码后,我不能在第二个插件或主题中使用bp_core_fetch_avatar(),它为每个用户回显相同的头像,为什么?我怎样才能解决这个问题? get_avatar可以回显出用户不同的头像基础,除了它无法识别我在插件中创建的$性别,这将告诉它是女性还是男性,因此头像将根据性别进行分配。我试图传递一些参数,比如我在插件中创建的$ gender,这就是为什么我认为我应该想出使用bp_core_fetch_avatar(),顺便说一句,get_avatar可以从插件传递一个参数吗?我知道get_avatar($ id,$ size,$ default,$ alt)。无论如何,我想知道为什么bp_core_fetch_avatar()在执行add_filter之后为每个用户回显相同的头像,我已经添加' item_id' =>" $ id"。感谢



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

       ?>
&#13;
&#13;
&#13;
&#13;
&#13;
<?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;
			    
			}
		}

?>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

  

我想知道为什么bp_core_fetch_avatar()回显相同的头像   每个用户在执行add_filter

之后

因为您向核心BP功能添加了过滤器。 在课程结束后尝试删除过滤器。

remove_filter#Example