我想用不同的图片替换默认的“神秘人”个人资料图片。
如您所知,您可以访问某人的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在其服务器上缓存图片?或者还有其他方法可以做我想做的事吗?
答案 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);
带来用户的自定义头像图片。每个用户都有不同的图片,并存储在他的用户元信息中。