2013-03-02 71 views
0

我想用不同的图片替换默认的“Mystery Man”配置文件图片。如何更改没有Gravatar的用户的默认配置文件图片(在Wordpress中)

如你所知,你可以去http://graph.facebook.com/ /图片访问某人的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在服务器上缓存图片?或者有什么其他的方式去做我想做的事情?

回答

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);带给用户的自定义头像图片。每个用户都有不同的图片,并存储在他的用户元信息中。

0

如果有人使用自定义头像的gmail帐户,并使用该电子邮件地址进行注册,它将自动使用该头像。我知道这可能不是你正在寻找的东西,但我认为这很有用。

UPDATE:

找到你的答案在这里:

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

+0

实际上,他们所说的就是我所做的,并没有奏效......这几乎是相同的代码。问题在于Wordpress会缓存导致问题的图片。如果有一种方法可以防止Wordpress缓存图片,它将起作用。 – 2013-03-02 21:12:44

+0

我认为在24小时内进行更改后,Wordpress将刷新该文件并将其缓存另外24个。 – 2013-03-02 21:26:12

+0

这没有帮助...每个用户都有不同的图片。即使wordpress会在24小时内刷新它,它也不会解决问题。 必须始终呈现图片,以便每个用户都可以看到不同的图片。很难解释我在说什么。我希望你明白问题所在,以便你能帮我解决问题。 – 2013-03-02 21:55:11

相关问题