以下是functions里加的代码
function custom_avatar_url($avatar, $id_or_email, $size, $default, $alt) {
// 处理注册用户(包括管理员)
$user = null;
if (is_numeric($id_or_email)) {
$user = get_user_by('id', absint($id_or_email));
} elseif ($id_or_email instanceof WP_User) {
$user = $id_or_email;
} elseif ($id_or_email instanceof WP_Comment) {
if ($id_or_email->user_id) {
$user = get_user_by('id', $id_or_email->user_id);
}
} elseif (is_string($id_or_email) && is_email($id_or_email)) {
$user = get_user_by('email', $id_or_email);
}
// 注册用户直接使用用户ID
if ($user && $user->exists()) {
$unique_key = 'user_' . $user->ID;
$avatar_url = "https://api.imuu.cn/index.php?unique={$unique_key}&size={$size}";
return '<img src="' . esc_url($avatar_url) . '" class="avatar avatar-' . $size . '" height="' . $size . '" width="' . $size . '" alt="' . esc_attr($alt) . '" />';
}
// 处理非注册用户(访客) - 增加邮箱判断
$fingerprint = array();
// 1. 尝试获取邮箱(最高优先级)
$email = '';
if (is_string($id_or_email) && is_email($id_or_email)) {
$email = $id_or_email;
} elseif ($id_or_email instanceof WP_Comment) {
$email = $id_or_email->comment_author_email ?? '';
}
if (!empty($email)) {
// 使用邮箱作为唯一标识
$unique_key = 'email_' . md5(strtolower(trim($email)));
$avatar_url = "https://api.imuu.cn/index.php?unique={$unique_key}&size={$size}";
return '<img src="' . esc_url($avatar_url) . '" class="avatar avatar-' . $size . '" height="' . $size . '" width="' . $size . '" alt="' . esc_attr($alt) . '" />';
}
// 2. 如果没有邮箱,则使用综合识别
// 获取客户端IP
$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
$fingerprint[] = $ip;
// 获取User Agent
$ua = $_SERVER['HTTP_USER_AGENT'] ?? 'unknown_ua';
$fingerprint[] = substr($ua, 0, 200); // 限制长度
// 获取评论者名称(如果有)
if ($id_or_email instanceof WP_Comment) {
$comment_author = $id_or_email->comment_author ?? '';
$fingerprint[] = sanitize_title($comment_author);
}
// 尝试获取Cookie标识
$cookie_name = 'commenter_avatar_id';
$cookie_value = $_COOKIE[$cookie_name] ?? '';
// 生成浏览器指纹
$browser_fingerprint = md5(implode('|', $fingerprint));
// 静态变量存储当前请求的计算结果
static $visitor_key = null;
if ($visitor_key === null) {
// 验证Cookie有效性
if ($cookie_value && preg_match('/^fp_[a-f0-9]{32}$/', $cookie_value)) {
$visitor_key = $cookie_value;
} else {
// 生成新标识:类型前缀+指纹哈希
$visitor_key = 'fp_' . $browser_fingerprint;
// 设置Cookie(有效期1年)
if (!headers_sent()) {
$expire = time() + YEAR_IN_SECONDS;
setcookie(
$cookie_name,
$visitor_key,
$expire,
COOKIEPATH,
COOKIE_DOMAIN,
is_ssl(),
true // HttpOnly
);
}
}
}
// 构造API请求URL
$unique_key = urlencode($visitor_key);
$avatar_url = "https://api.imuu.cn/index.php?unique={$unique_key}&size={$size}";
return '<img src="' . esc_url($avatar_url) . '" class="avatar avatar-' . $size . '" height="' . $size . '" width="' . $size . '" alt="' . esc_attr($alt) . '" />';
}
add_filter('get_avatar', 'custom_avatar_url', PHP_INT_MAX, 5);
后台访客评论头像正常

前台是这样的,未更新,一直都是默认的,尝试修改过zibll/inc/functions/zib-theme.php均未成功









