0

我想用不同的图片替换默认的“神秘人”头像。

如您所知,您可以通过访问http://graph.facebook.com/ /picture 访问某人的 Facebook 个人资料图片(替换为所请求帐户的 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 在他们的服务器上缓存图片?或者有没有其他方法可以做我想做的事?

4

2 回答 2

0

如果某人有一个带有自定义头像的 gmail 帐户,并且该电子邮件地址用于注册,它将自动使用该头像。我知道这可能不是您正在寻找的东西,但我认为了解它非常有用。

更新:

在这里找到你的答案:

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

于 2013-03-02T21:00:29.247 回答
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);用户的自定义头像图片。每个用户都有不同的图片,并存储在他的用户元信息中。

于 2013-03-05T11:53:12.337 回答