出於種種原因,Gravatar 在國內的訪問極其不穩定,而 Wordpress 和 Typecho 都使用 Gravatar 作為頭像源,這導致網站的上文章出現評論時,頁面會因為幾個 Gravatar 頭像而一直處於載入狀態。為了解決這個問題,我嘗試自行搭建 Gravatar 映象並將其更換到 Wordpress 和 Typecho,徹底而完美的解決了問題,並且水出了一篇文章。
為什麼不直接關了 Gravatar?一句話:沒有靈魂。Gravatar可能是世界上使用範圍最廣的通用頭像,若是直接關了 Gravatar,評論裏的人就失去了“靈魂”,只剩下一個冷冰冰的人物模具。
回到正題,想要替換 Gravatar 源,首先你得有一個 Gravatar 源。在一開始的時候,我在網上找了一圈 Gravatar 源,並對它們進行了逐一測試。結果就是發現他們不是太慢就是早已失效,例如網上滿天飛的 V2EX 源 https://cdn.v2ex.com/gravatar/ 在國內就已經被封鎖。於是我決定自行搭建一個 Gravatar 映象。
更新:使用 Cravatar
實際上,Gravatar 有一個完美的本土化方案——Cravatar,Cravatar 的 API 將會按照 Cravatar 頭像 –> Gravatar 頭像 –> QQ頭像的順序為用戶匹配頭像。並且,Cravatar 的 API 呼叫方式與 Gravatar 完全相容。
並且,Cravatar 官方也給出了一份簡明的指導:
你可以很方便的為 WordPress 整合 Cravatar 頭像服務,只需要將以下代碼加入你的外掛或主題的 functions.php 裏即可。
| |
自建Gravatar映象:Nginx 反代 Gravatar 官方源
注意:這一部分僅適用於伺服器在海外的同學,如果伺服器在國內請直接繞道去看後面的部分
首先宣告,為了方便管理網站,我使用了寶塔面板。在寶塔面板裏使用你想要的域名新建一個網站,純靜態,數據庫和FTP都不需要。完成後,轉到這個網站的設定,找到反向代理選項,新建一個新的反向代理,填入目標 URL 為 https://secure.gravatar.com提交儲存即可。到了這一步,嘗試訪問指派給網站的域名,別忘了加上/avatar,如果出現了預設 Gravatar 頭像即代表配置成功。



配置成功後,除非你想看到 Chrome “不安全”的提示,否則別忘了給剛剛搭建好的映象申請一個 SSL 證書。通常情況下直接使用 Let’s Encrypt 即可,開啓網站的 SSL 選項,用 DNS 驗證的方式申請一個 SSL 證書後開啓強制 HTTPS 即可。到這一步,我們自己的 Gravatar 映象就搭建完成了。
更換部落格上的 Gravatar 源為國內可訪問源
Wordpress
對於 Wordpress,Google 上搜尋到的相關文章大部分都透過修改主題的functions.php檔案,加入如下的函式來實現。
| |
實測在 MDx 主題上這種方法無效,故使用了另一種方法:開啓網站目錄,找到/wp-includes裏的link-templates.php,在這個檔案中搜尋“gravatar”,大約在這個檔案4378行的位置就可以發現 Gravatar 的連結,替換連結為國內可訪問的映象源即可。

至於外掛,暫時沒有找到還在更新且能完美實現這個功能的外掛,如果有歡迎評論。
Typecho
對於 Typecho,方法與 Wordpress 大同小異,找到網站根目錄,開啓/var/Typecho/目錄下的Common.php檔案。大約在 836 行左右的地方可以找到 Gravatar 官方源的地址,替換為國內可訪問源即可。

不過,某些 Typecho 主題可能不會呼叫 Typecho 的模板函式,而是使用主題內的函式,這時需要對主題檔案作額外的修改。回到網站根目錄,開啓/usr/themes/下你的主題根目錄,主題獲取 Gravatar 的相關代碼一般在comments.php裏,開啓comments.php搜尋"avatar" 找到 Gravatar 官方源的地址替換為國內可訪問源即可。

推薦的Gravatar源
目前只推薦自建源和七牛雲源,後續可能會尋找新源,如果有歡迎評論。
| |
需要注意的是
你可能已經注意到,在 Typecho 自帶的模版函式里,呼叫 Gravatar 源時不需要加/avatar,這是因為 Typecho 自帶的函式里已經自動為之加上。同理,有的源呼叫avatar的路徑可能是/gravatar,應用到網站上時需要做出相應的修改。
評論已停用,直到您接受功能性 Cookie。