【提问】每个访客根据ip+ua+cook自动获取一个固定的头像,有没有大神挑战一下-zibll综合交流社区-zibll子比主题-WordPress主题模板-zibll子比主题

提问每个访客根据ip+ua+cook自动获取一个固定的头像,有没有大神挑战一下

以下是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);

后台访客评论头像正常

20250728172222808-image-116

 

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

20250728172353312-image-117

 

请登录后发表评论

    • 古韵的头像-WordPress主题模板-zibll子比主题代理会员古韵徽章-人气佳作-WordPress主题模板-zibll子比主题等级-LV8-WordPress主题模板-zibll子比主题作者0