本人的wordpress访问【Gravatar 头像服务】体验不太好,提示错误如下,影响网页性能,索性禁止了它。
GET https://secure.gravatar.com/avatar/1e96676…?s=52&d=mm&r=g net::ERR_CONNECTION_TIMED_OUT
Gravatar 头像服务,其中获取图像关键代码在【pluggable.php】中函数【get_avatar】,其功能返回html标签【img】的用户头像,如下:
function get_avatar
// 返回html标签img之前,允许用户拦截,并自行定义。
$avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );
// 访问Gravatar 头像服务
$args = get_avatar_data( $id_or_email, $args );
function get_avatar_data
...
// 正是这个地址访问异常
$url = 'https://secure.gravatar.com/avatar/' . $email_hash;
以上代码分析可知,只要生成html标签img之前将之拦截,并自行定义。就达到了禁用Gravatar 头像服务的目的了。代码如下:
// 禁用 Gravatar,强制使用本地头像
function disable_gravatar_and_use_local($avatar, $id_or_email, $size, $default, $alt) {
// 本地头像路径(确保文件存在)
$local_avatar = get_template_directory_uri() . '/images/avatar.svg';
// 构造本地头像的 HTML,使用传入的 $size 作为宽高
$local_avatar_html = sprintf(
'<img src="%s" alt="%s" width="%d" height="%d" class="avatar avatar-%d" />',
esc_url($local_avatar), // 本地头像 URL
esc_attr($alt), // 替代文本(保留原参数)
$size, // 宽度
$size, // 高度(通常宽高一致)
$size // 类名中的尺寸(如 avatar-64)
);
return $local_avatar_html; // 返回本地头像,替代 Gravatar 的 HTML
}
add_filter('get_avatar', 'disable_gravatar_and_use_local', 10, 5); // 声明接收 5 个参数
段落