如何更改没有Gravatar的用户的默认个人资料图片(在Wordpress中)

时间:2013-03-02 20:56:58

标签: php facebook wordpress gravatar

我想用不同的图片替换默认的“神秘人”个人资料图片。

如您所知,您可以访问某人的Facebook个人资料图片,转到http://graph.facebook.com/ /图片(替换为所请求帐户的UID。

所以我基本上做的是添加我的主题的函数文件这几行:

 add_filter( 'avatar_defaults', 'newgravatar' );  


function newgravatar ($avatar_defaults) {  
    $myavatar = 'http://graph.facebook.com/'.get_current_user_id().'/picture';
    $avatar_defaults[$myavatar] = "FB Profile Picture";  
    return $avatar_defaults;  
}

问题是wordpress不直接显示此URL。它将图片存储在WordPress.com的服务器上。因此,图片始终是相同的图片,并且在其他用户登录时不会更改。

有没有办法阻止WordPress在其服务器上缓存图片?或者还有其他方法可以做我想做的事吗?

2 个答案:

答案 0 :(得分:0)

如果有人拥有自定义头像的Gmail帐户,并且该电子邮件地址用于注册,则会自动使用该头像。我知道这可能不是你想要的,但我认为知道它非常有用。

更新:

在这里找到你的答案:

http://buildinternet.com/2009/02/how-to-change-the-default-gravatar-in-wordpress/

答案 1 :(得分:0)

我终于通过使用此过滤器来修复它:

    add_filter('get_avatar', 'new_fb_insert_avatar', 1, 5);



function new_fb_insert_avatar($avatar = '', $id_or_email, $size = 96, $default = '', $alt = false) {



  $id = 0;

  if (is_numeric($id_or_email)) {

    $id = $id_or_email;

  } else if (is_string($id_or_email)) {

    $u = get_user_by('email', $id_or_email);

    $id = $u->id;

  } else if (is_object($id_or_email)) {

    $id = $id_or_email->user_id;

  }

  if ($id == 0) return $avatar;

  $pic = get_user_meta($id, 'fb_profile_picture', true);

  if (!$pic || $pic == '') return $avatar;

  $avatar = preg_replace('/src=("|\').*?("|\')/i', 'src=\'' . $pic . '\'', $avatar);

  return $avatar;

}

get_user_meta($id, 'fb_profile_picture', true);带来用户的自定义头像图片。每个用户都有不同的图片,并存储在他的用户元信息中。