..start..fly..

扫一扫
Guestbook

Home / PHP & Wordpress / wordpress的Gravatar头像本地化

<< wordpress报错The server encountered an internal errorJquery暗箱效果可扩展相册jQuery.TosRUs-master >>

在wordpress中采用Gravatar固然可用增加网站的交互性乐趣,但是由于Gravatar加载缓慢,有的时候严重拖拉网站的加载速度,于是将Gravatar本地化,即将Gravatar头像存储在网站目录里不失为不错的选择。且该方法支持wordpress最新的wordpress4.5.2版本,而且在国内主机中同样适用。

1.首先在网站的根目录下创建文件夹avatar,权限为755,

2.然后制作一个默认的gravatar头像,即default.jpg,并上传该default.jpg图像到上一步的avatar文件夹中,

3.在主题的function.php中添加以下代码(记得备份文件):

 

  1. function fa_cache_avatar($avatar, $id_or_email, $size, $default, $alt)
  2. {
  3.     $avatar = str_replace(array(“www.gravatar.com”“0.gravatar.com”“1.gravatar.com”“2.gravatar.com”), “cn.gravatar.com”, $avatar);
  4.     $tmp = strpos($avatar, ‘http’);
  5.     $url = get_avatar_url( $id_or_email, $size ) ;
  6.     $url = str_replace(array(“www.gravatar.com”“0.gravatar.com”“1.gravatar.com”“2.gravatar.com”), “cn.gravatar.com”, $url);
  7.     $avatar2x = get_avatar_url( $id_or_email, ( $size * 2 ) ) ;
  8.     $avatar2x = str_replace(array(“www.gravatar.com”“0.gravatar.com”“1.gravatar.com”“2.gravatar.com”), “cn.gravatar.com”, $avatar2x);
  9.     $g = substr($avatar, $tmp, strpos($avatar, “‘”, $tmp) – $tmp);
  10.     $tmp = strpos($g, ‘avatar/’) + 7;
  11.     $f = substr($g, $tmp, strpos($g, “?”, $tmp) – $tmp);
  12.     $w = home_url();
  13.     $e = ABSPATH .’avatar/’. $size . ‘*’. $f .’.jpg’;
  14.     $e2x = ABSPATH .’avatar/’. ( $size * 2 ) . ‘*’. $f .’.jpg’;
  15.     $t = 1209600;
  16.     if ( (!is_file($e) || (time() – filemtime($e)) > $t) && (!is_file($e2x) || (time() – filemtime($e2x)) > $t ) ) {
  17.         copy(htmlspecialchars_decode($g), $e);
  18.         copy(htmlspecialchars_decode($avatar2x), $e2x);
  19.     } else { $avatar = $w.’/avatar/’. $size . ‘*’.$f.’.jpg’;
  20.         $avatar2x = $w.’/avatar/’. ( $size * 2) . ‘*’.$f.’.jpg’;
  21.         if (filesize($e) < 1000) copy($w.’/avatar/default.jpg’, $e);
  22.         if (filesize($e2x) < 1000) copy($w.’/avatar/default.jpg’, $e2x);
  23.         $avatar = “<img alt='{$alt}’ src='{$avatar}’ srcset='{$avatar2x}’ class=’avatar avatar-{$size} photo’ height='{$size}’ width='{$size}’ />”;
  24.     }
  25.     return $avatar;
  26. }
  27. add_filter(‘get_avatar’, ‘fa_cache_avatar’,1,5);

PS:强烈建议将更新频率更改更长天数。

最终效果如下:

gravatar

Related Posts

转载原创文章请注明,转载自:SKY..fly..[www.sky.gs]

本文链接: https://www.sky.gs/websites/phpwordpress/wordpress-gravatar-location.html

QR:  wordpress的Gravatar头像本地化

13 Responses to “wordpress的Gravatar头像本地化”

  1. shui7777 says:

    希望你的博客如这个夏天一样火热。

  2. eeequn says:

    持续更新,持续来访。

Leave a Reply

Code (☆)10+0=?


Websites powered by Wordpress5.7 Copyright © 2009-2021 - All Rights Reserved   SKY..fly..