Wordperss

wordpress完全禁用掉gravatar,使用用户上传头像的方法

为了使用用户自己上传的头像,很自然地我想到了寻找插件,搜索一圈之后,发现了叫simple local avatars的东东,可以让用户手动上传头像。在用户上传了头像的情况下,使用用户上传的头像,否则,继续使用gravatar头像,这就大致符合了要求。启用该插件后,在用户个人资料处,会有上传头像的地方,同时,在设置->讨论的最下方,会有项是否允许没有文件上传权限的用户上传头像。

然而如果需要彻底禁用gravatar,完全杜绝访问gravatar服务,在用户没有上传头像的时候使用一个默认头像,就需要更深入的探求。我网上搜索了下,发现也有很多人为此而苦恼,我自己动手稍稍研究了下,这里发上我的解决办法。
在使用notepad++打开了wordpress的所有文件(好几百个,notepad++都卡了,原谅一个wp菜鸟吧,我只能采用如此粗暴的办法),搜索了“avatar”关键字后,我最终确认问题源头在于get_avatar函数,位于wp-includes\pluggable.php内。大致看了下该函数的处理过程,反复测试之后,我直接注销掉了大部分代码,只保留了极小部分,修改后的函数如下:

if ( !function_exists( 'get_avatar' ) ) :
/**
* Retrieve the avatar for a user who provided a user ID or email address.
*
* @since 2.5
* @param int|string|object $id_or_email A user ID, email address, or comment object
* @param int $size Size of the avatar image
* @param string $default URL to a default image to use if no avatar is available
* @param string $alt Alternate text to use in image tag. Defaults to blank
* @return string tag for the user's avatar
*/
function get_avatar( $id_or_email, $size = '96', $default = '', $alt = false ) {
if ( ! get_option('show_avatars') )
return false;

if ( false === $alt)
$safe_alt = '';
else
$safe_alt = esc_attr( $alt );

if ( !is_numeric($size) )
$size = '96';
$default = includes_url('images/blank.gif');
$avatar = "";

return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

}
endif;

即使用该函数,仅可能返回一个默认头像(位于wp-includes/images/blank.gif内),再配合simple local avatars插件,就实现了预期的效果。

(0)

本文由 V泡网 作者:Lefat 发表,转载请注明来源!

关键词:,
梯子铺SS

热评文章