WordPress 評論 QQ 信箱呼叫 QQ 頭像來源

16,037 11

不得不說,在國內很多人不習慣使用電子郵件,甚至沒有 Gravatar 頭像,針對國內情況對主題進行了一定的最佳化。如果使用 QQ 信箱,則呼叫 QQ 頭像,否則繼續呼叫 Gravatar 頭像,這樣既方便了 QQ 使用者,也方便了 Gravatar 使用者。此方法並不會拖慢網頁載入速度,可以說是一個比較好的方法了。

圖片

首先,我們找到了取得 QQ 頭像的介面 https://q.qlogo.cn/g?b=qq&nk=52958812&s=100,然而我們並不能直接取得評論者的 QQ,所以我們需要取得評論者的 email 位址:

PHP
get_comment($parent_id)->comment_author_email);

有了 email 位址,進行判斷是否為 QQ 信箱:

PHP
if(strpos($qqmail, '@qq.com'))

如果是 QQ 信箱的話,則呼叫 QQ 頭像:

PHP
$avatar_source = 'q.qlogo.cn';
$img = 'g?b=qq&nk=' . preg_replace('/@qq.com/', '', $qqmail) . '&s=100';

否則仍然呼叫 Gravatar 頭像:

PHP
$avatar_source = 'cn.gravatar.com';
$img = 'avatar/$1?s=$2';

這樣這個問題就愉快地解決了。

完整程式碼如下:

PHP
// Gravatar 头像
function get_avatar_javst($avatar) { 
    $protocol = is_ssl() ? 'https' : 'http';
    $qqmail = trim(get_comment($parent_id)->comment_author_email);
    if (strpos($qqmail, '@qq.com')) {
        $avatar_source = 'q.qlogo.cn';
        $img = 'g?b=qq&nk=' . preg_replace('/@qq.com/', '', $qqmail) . '&s=100';
    } else {
        $avatar_source = 'cn.gravatar.com';
        $img = 'avatar/$1?s=$2';
    }
    $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&amp;.*/', '<img class="avatar avatar-$2" src="' . $protocol . '://' . $avatar_source . '/' . $img . '" width="$2" height="$2" />', $avatar);
    return $avatar;
}
add_filter('get_avatar', 'get_avatar_javst');

評論

(11)
  1. 果壳Sir
    MIUI Browser 10 Android 9MIX 3

    看看,试试

  2. 果壳Sir
    MIUI Browser 10 Android 9MIX 3

    怎么使用呢?

    1. Chrome 76 macOS 10.14.6Apple Macintosh

      QQ获取头像的接口改了,WordPress获取头像的方式也变了,这篇教程作废

  3. Sogou Explorer 1 Windows 7

    www.zhulouren.com 测试

  4. Edge 18 Windows 10

    不能拉去qq用户的名称吗?

  5. Edge 18 Windows 10

    有机会能,交换一个友链吗?我的网站还在建设

  6. QQBrowser 10 Windows 10

    一知半解啦

  7. QQBrowser 10 Windows 10

    请问 你这个 如何 做到 呢 好好玩

發佈評論