Gravatar头像不显示完美解决方案
有没有一种方案能完美的解决我们的这些烦恼呢?答案是肯定的。提升Wordpress的Gravatar头像加载速度进阶的方法就是将Gravatar头像的服务器变为国内的,放在国内知名公司的服务器上或者专业的CDN服务器上。经过测试我们发现多说调用的Gravatar头像可以正常显示。猜测可能多说可能为了用户的体验而架设了一台Gravatar国内的中转服务器,那么福音来了,只需短短几行代码就可以彻底告别Gravatar被墙的困扰。本篇文章就来介绍此种方法。
方案一:
打开wordpress程序目录的wp-includes文件夹,找到pluggable.php(WP4.2之前版本)打开,将大约2150至2157行:
- if ( is_ssl() ) {
- $host = ‘https://secure.gravatar.com’;
- } else {
- if ( !emptyempty($email) )
- $host = sprintf( “http://%d.gravatar.com”, ( hexdec( $email_hash[0] ) % 2 ) );
- else
- $host = ‘http://0.gravatar.com’;
- }
替换为:
- if ( is_ssl() )
- $host = ‘https://secure.gravatar.com’;
- else
- $host = ‘http://www.gravatar.com’;
WP4.2之后版本,打开wordpress程序目录的wp-includes文件夹,打开link-template.php,将大约第3604行的:
- $url = sprintf( ‘http://%d.gravatar.com/avatar/%s’, $gravatar_server, $email_hash );
修改为:
- $url = sprintf( ‘http://cn.gravatar.com/avatar/%s’, $email_hash );
方案二:
1、方法的原理是:官方Gravatar的头像所在的路径一般都是
- www.gravatar.com、0.gravatar.com、1.gravatar.com、2.gravatar.com
我们只需要将这些头像默认的URL换成多说的就行了。
2、打开主题下的functions.php 文件,将以下代码复制粘贴保存即可。
- //多说官方Gravatar头像调用
- function mytheme_get_avatar($avatar) {
- $avatar = str_replace(array(“www.gravatar.com”,“0.gravatar.com”,“1.gravatar.com”,“2.gravatar.com”),“gravatar.duoshuo.com”,$avatar);
- return $avatar;
- }
- add_filter( ‘get_avatar’, ‘mytheme_get_avatar’, 10, 3 );
3、更新多说代码。
加入上面的代码后,前台的用户头像都是正常显示的,但是后台的只显示非默认头像,不显示默认的头像,导致这个问题的原因是Wordpress后台默认头像强制设置成了mystery,并且这个参数似乎没有办法用钩子替换。
将以下代码添加在主题下的functions.php 文件中。
- //多说官方Gravatar头像调用
- function get_avatar_deadwood( $avatar ) {
- $avatar = preg_replace( “/http%3A%2F%2F\d.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D\d+/”,“mm”,$avatar );
- $avatar = preg_replace( “/http:\/\/(www|\d).gravatar.com/”,“http://gravatar.duoshuo.com”,$avatar );
- return $avatar;
- }
- add_filter( ‘get_avatar’, ‘get_avatar_deadwood’ );
方案三:
官方Gravatar头像调用ssl头像链接 。
https还是没被墙的,而且速度还不错,直接调用这个最简单了。
如果你的网站启用了ssl则不需要了,否则functions.php 加入如下代码:
- //官方Gravatar头像调用ssl头像链接
- function get_ssl_avatar($avatar) {
- $avatar = preg_replace(‘/.*\/avatar\/(.*)\?s=([\d]+)&.*/’,'<img class=“avatar avatar-$2” src=“https://secure.gravatar.com/avatar/$1?s=$2” alt=“” width=“$2” height=“$2” />’,$avatar);
- return $avatar;
- }
- add_filter(‘get_avatar’, ‘get_ssl_avatar’);
原创文章,作者:wwh,如若转载,请注明出处:https://www.wuwenhui.cn/3559.html
评论列表(4条)
方法三简单粗暴
@Han::mrgreen:
@wwh:没有回复邮件提醒?
测试一下有没有头像