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’);

原创文章,作者:wwh,如若转载,请注明出处:https://www.wuwenhui.cn/3559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
wwhwwh
上一篇 2015-08-06
下一篇 2015-10-15

相关推荐

发表回复

登录后才能评论

评论列表(4条)

  • Han
    Han 2015-12-11 16:00

    方法三简单粗暴

  • qwdb
    qwdb 2020-03-27 18:17

    测试一下有没有头像

联系我们

在线咨询:点击这里给我发消息

站长邮箱:admin@wuwenhui.cn
工作时间:周一至周五,8:30-17:30,节假日休息

微信
本站支持QQ一键注册登录,所有资源下载均在文章底部~