问题描述
在WordPress中可以设置游客图像,但实际上头像会存在加载缓慢等问题。
原因为:自定义的头像会同步到Gravatar网站,该网站首次打开都可能存在问题。
解决方案
WordPress媒体库中,新增未知用户头像。
新增后,复制文件URL地址,将URL地址替换到下面的“头像URL链接”处。
// 替换 Gravatar 头像为本地头像(包含陌生人评论)
function custom_avatar($avatar, $id_or_email, $size, $default, $alt) {
// 设置默认本地头像路径
$local_default_avatar = '头像URL链接';
// 判断是否为注册用户
if (is_email($id_or_email)) {
$user = get_user_by('email', $id_or_email); // 根据邮箱获取用户
} elseif (is_numeric($id_or_email)) {
$user = get_user_by('id', $id_or_email); // 根据用户 ID 获取用户
} elseif (isset($id_or_email->user_id)) {
$user = get_user_by('id', $id_or_email->user_id); // 评论对象中获取用户
} else {
$user = null; // 陌生人
}
// 如果是注册用户,返回原始头像(保持不变)
if ($user && $user->ID) {
return $avatar;
}
// 对于未注册用户(陌生人),返回本地默认头像
return "<img src='{$local_default_avatar}' alt='{$alt}' width='{$size}' height='{$size}' class='avatar avatar-{$size} photo' />";
}
add_filter('get_avatar', 'custom_avatar', 10, 5);
将这段代码新增到functions.php中:
点击“更新文件”按钮,前台页面同步更新。
总结
该问题解决的是,在WordPress中用户留言的头像,通过校验留言用户是否为注册用户,如果不是注册用户,使用自定义的图片进行展示。
好处为不需要走Gravatar网站,通过网站自身的头像进行展示,不好的地方就是这里统一了非注册用户的头像,同时增加了维护成本。
还需要注意的一点是,网站前期通过插件“Simple Local Avatars”进行设置的账号头像,所以,如果你想要让自己的注册账号使用头像,也可以考虑使用“Simple Local Avatars”插件进行实现。
上述代码只解决未注册用户的头像显示问题。