为了使用用户自己上传的头像,很自然地我想到了寻找插件,搜索一圈之后,发现了叫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插件,就实现了预期的效果。
本文由 V泡网 作者:Lefat 发表,转载请注明来源!