Gravatar頭像不顯示完美解決方案

Gravatar頭像不顯示完美解決方案

有沒有一種方案能完美的解決我們的這些煩惱呢?答案是肯定的。提升Wordpress的Gravatar頭像加載速度進階的方法就是將Gravatar頭像的服務器變為國內的,放在國內知名公司的服務器上或者專業的CDN服務器上。經過測試我們發現多說調用的Gravatar頭像可以正常顯示。猜測可能多說可能為了用戶的體驗而架設了一臺Gravatar國內的中轉服務器,那么福音來了,只需短短幾行代碼就可以徹底告別Gravatar被墻的困擾。本篇文章就來介紹此種方法。

方案一:

打開wordpress程序目錄的wp-includes文件夾,找到pluggable.php(WP4.2之前版本)打開,將大約2150至2157行:

  1. if?(?is_ssl()?)?{
  2. $host?=?'https://secure.gravatar.com';
  3. }?else?{
  4. if?(?!emptyempty($email)?)
  5. $host?=?sprintf(?"http://%d.gravatar.com",?(?hexdec(?$email_hash[0]?)?%?2?)?);
  6. else
  7. $host?=?'http://0.gravatar.com';
  8. }

替換為:

  1. if?(?is_ssl()?)
  2. $host?=?'https://secure.gravatar.com';
  3. else
  4. $host?=?'http://www.gravatar.com';

WP4.2之后版本,打開wordpress程序目錄的wp-includes文件夾,打開link-template.php,將大約第3604行的:

  1. $url?=?sprintf(?'http://%d.gravatar.com/avatar/%s',?$gravatar_server,?$email_hash?);

修改為:

  1. $url?=?sprintf(?'http://cn.gravatar.com/avatar/%s',?$email_hash?);

方案二:

1、方法的原理是:官方Gravatar的頭像所在的路徑一般都是

  1. www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com

我們只需要將這些頭像默認的URL換成多說的就行了。

2、打開主題下的functions.php 文件,將以下代碼復制粘貼保存即可。

  1. //多說官方Gravatar頭像調用
  2. function?mytheme_get_avatar($avatar)?{
  3. $avatar?=?str_replace(array("www.gravatar.com","0.gravatar.com","1.gravatar.com","2.gravatar.com"),"gravatar.duoshuo.com",$avatar);
  4. return?$avatar;
  5. }
  6. add_filter(?'get_avatar',?'mytheme_get_avatar',?10,?3?);

3、更新多說代碼。

加入上面的代碼后,前臺的用戶頭像都是正常顯示的,但是后臺的只顯示非默認頭像,不顯示默認的頭像,導致這個問題的原因是Wordpress后臺默認頭像強制設置成了mystery,并且這個參數似乎沒有辦法用鉤子替換。

將以下代碼添加在主題下的functions.php 文件中。

  1. //多說官方Gravatar頭像調用
  2. function?get_avatar_deadwood(?$avatar?)?{
  3. $avatar?=?preg_replace(?"/http%3A%2F%2F\d.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D\d+/","mm",$avatar?);
  4. $avatar?=?preg_replace(?"/http:\/\/(www|\d).gravatar.com/","http://gravatar.duoshuo.com",$avatar?);
  5. return?$avatar;
  6. }
  7. add_filter(?'get_avatar',?'get_avatar_deadwood'?);

方案三:

官方Gravatar頭像調用ssl頭像鏈接?。

https還是沒被墻的,而且速度還不錯,直接調用這個最簡單了。

如果你的網站啟用了ssl則不需要了,否則functions.php 加入如下代碼:

  1. //官方Gravatar頭像調用ssl頭像鏈接
  2. function?get_ssl_avatar($avatar)?{
  3. $avatar?=?preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&amp;.*/','<img?class="avatar?avatar-$2"?src="https://secure.gravatar.com/avatar/$1?s=$2"?alt=""?width="$2"?height="$2"?/>',$avatar);
  4. return?$avatar;
  5. }
  6. add_filter('get_avatar',?'get_ssl_avatar');

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前評論:3   其中:訪客  3   博主  0

  1. avatar Han 0

    方法三簡單粗暴