gpt4 book ai didi

WordPress中Gravatar头像缓存到本地及相关优化的技巧

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章WordPress中Gravatar头像缓存到本地及相关优化的技巧由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

将Gravatar全球通用头像缓存的目的在于加快网站的打开速度,因为Gravatar官网的服务器在国外,加上伟大的GFW,国内打开速度经常很慢。方法来自willin,不过貌似他的网站已经打不开了- -   将Gravatar全球通用头像缓存到本地   缓存方法如下:

1.建立缓存目录 在WordPress根目录建立一个名为 avatar的文件夹,设置该文件夹的权限为 0755 (如果 0755 不行,就试一下 0777).

2.设置默认头像 准备一张大小适合(32*32即可)的默认头像,命名为"default.jpg" ,放在 avatar 文件夹里面.

3.添加缓存代码 将下面的代码复制到主题的 functions.php 文件中即可 。

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function my_avatar( $avatar ) {
$tmp = strpos ( $avatar , 'http' );
$g = substr ( $avatar , $tmp , strpos ( $avatar , "'" , $tmp ) - $tmp );
$tmp = strpos ( $g , 'avatar/' ) + 7;
$f = substr ( $g , $tmp , strpos ( $g , "?" , $tmp ) - $tmp );
$w = get_bloginfo( 'wpurl' );
$e = ABSPATH . 'avatar/' . $f . '.jpg' ;
$t = 1209600; //設定14天, 單位:秒
if ( ! is_file ( $e ) || (time() - filemtime ( $e )) > $t ) { //當頭像不存在或文件超過14天才更新
copy (htmlspecialchars_decode( $g ), $e );
} else $avatar = strtr ( $avatar , array ( $g => $w . '/avatar/' . $f . '.jpg' ));
if ( filesize ( $e ) < 500) copy ( $w . '/avatar/default.jpg' , $e );
return $avatar ;
}
add_filter( 'get_avatar' , 'my_avatar' );

通过Email判断用户是否有Gravatar头像 很多时候,我们还需要知道用户有没有设置Gravatar,比如如果用户没有设置Gravatar头像则直接显示本地的默认头像,或者提醒没有设置Gravatar的用户设置Gravatar头像,而不打扰已经设置过头像的用户。今天分享的代码可以通过Email地址来验证用户是否有Gravatar头像:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
function validate_gravatar( $email ) {
  $hash = md5( strtolower (trim( $email )));
  $uri = ' http://www.gravatar.com/avatar/ ' . $hash . '?d=404' ;
  $headers = @get_headers( $uri );
  if (!preg_match( "|200|" , $headers [0])) {
  $has_valid_avatar = FALSE;
  } else {
  $has_valid_avatar = TRUE;
  }
  return $has_valid_avatar ;
}

Gravatar全球通用头像缓存优化 。

优化后的代码可以避免用户没有设置Gravatar头像时,默认头像重复缓存成多个文件造成资源浪费和重复连接的问题。优化后的代码如下 。

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
function my_avatar( $email , $size = '32' , $default = '' , $alt = '' ) {
  $f = md5( strtolower ( $email ) );
  // 以下代码将头像缓存到wp-content目录下
  $a = get_bloginfo( 'template_url' ) . '/avatar/' . $f . $size . '.png' ;
  $e = get_template_directory() . '/avatar/' . $f . $size . '.png' ;
  $d = get_template_directory() . '/avatar/' . $f . '-d.png' ;
  // 如果要将头像缓存到当前主题目录下,请将3-5行代码改成:
  // $a = get_bloginfo('template_url') . '/avatar/'. $f . $size . '.png';
  // $e = get_template_directory() . '/avatar/' . $f . $size . '.png';
  // $d = get_template_directory() . '/avatar/' . $f . '-d.png';
 
if ( $default == '' )
   $default = get_bloginfo( 'wpurl' ). 'avatar/default.jpg' ;
 
  $t = 2592000; // 缓存有效期30天, 这里单位:秒
  if ( ! is_file ( $e ) || (time() - filemtime ( $e )) > $t ) {
   if ( ! is_file ( $d ) || (time() - filemtime ( $d )) > $t ) {
    // 验证是否有头像
    $uri = ' http://www.gravatar.com/avatar/ ' . $f . '?d=404' ;
    $headers = @get_headers( $uri );
    if (!preg_match( "|200|" , $headers [0])) {
     // 没有头像,则新建一个空白文件作为标记
     $handle = fopen ( $d , 'w' );
     fclose( $handle );
     $a = $default ;
    }
    else {
     // 有头像且不存在则更新
     $r = get_option( 'avatar_rating' );
     $g = ' http://www.gravatar.com/avatar/ ' . $f . '?s=' . $size . '&r=' . $r ;
     copy ( $g , $e );
    }
   }
   else {
    $a = $default ;
   }
  }
 
  $avatar = "<img id="codetool">

使用这个方法需要在主题所有文件中,将 get_avatar 函数替换为 my_avatar 。 而且如果是 。

 
?
1
 
get_avatar( $comment ,

格式的话,还需要改成 。

 
?
1
 
my_avatar( $comment ->comment_author_email

因为my_avatar函数只能通过Email来调取用户头像,所以以上情况,需要将第一个参数改成email地址.

  • WordPress
  • 头像
  • gravatar
  • 延伸 · 阅读

    • 2020-12-08利用Fix Rss Feeds插件修复WordPress的Feed显示错误
    • 2020-12-08详解WordPress中过滤链接与过滤SQL语句的方法
    • 2020-12-08WordPress中注册菜单与调用菜单的方法详解
    • 2020-12-08讲解WordPress开发中一些常用的debug技巧
    • 2020-12-08详解WordPress中给链接添加查询字符串的方法
    • 2020-12-08WordPress中用于更新伪静态规则的PHP代码实例讲解
    精彩推荐
    • PHP教程JoshChen_web格式编码UTF8-无BOM的小细节分析

      JoshChen_web格式编码UTF8-无BOM的小细节分析

      下面这张图是用chrome浏览器打开一个2012年-2013学年第二学期的PHP课程的期末作业,用的是PHP + smarty + mysql来实现的... 。

      PHP教程网 295 2020-05-16
    • PHP教程php算法实例分享

      php算法实例分享

      本文给大家分享了几个常见的php算法的实例代码,非常的简单实用,有需要的小伙伴可以参考下。... 。

      PHP教程网 378 2020-11-05
    • PHP教程PHP+Mysql+jQuery文件下载次数统计实例讲解

      PHP+Mysql+jQuery文件下载次数统计实例讲解

      这篇文章主要内容是关于PHP+Mysql+jQuery文件下载次数统计实例讲解... 。

      PHP教程网 403 2020-11-24
    • PHP教程用 Composer构建自己的 PHP 框架之构建路由

      用 Composer构建自己的 PHP 框架之构建路由

      本文是构建自己的php框架的第二篇,主要为大家来讲述如何构建路由,非常的详细,也很易懂,有需要的朋友可以参考下... 。

      PHP之家 353 2020-08-03
    • PHP教程php自动加载autoload机制示例分享

      php自动加载autoload机制示例分享

      这篇文章主要介绍了php自动加载autoload机制示例,文件结构如下,2种方式实现自动加载,需要的朋友可以参考下... 。

      PHP教程网 343 2020-06-12
    • PHP教程php根据用户语言跳转相应网页

      php根据用户语言跳转相应网页

      这篇文章主要介绍了php根据用户语言跳转相应网页的方法,主要区分国内国外,感兴趣的小伙伴们可以参考一下... 。

      PHP教程网 330 2020-11-29
    • PHP教程php中动态修改ini配置

      php中动态修改ini配置

      上一篇文章我们阐述php.ini配置原理,本文我们来讲动态修改php配置,需要的朋友可以参考下... 。

      driftcloudy 265 2020-07-31
    • PHP教程关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况

      关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表

      今天在处理bug的时候,又发现一个奇怪的问题,在设置mysql的编码为gbk的情况下,发现建立出来的表,凡是表结构无论是字段还是表结构描述是中文的时候... 。

      PHP教程网 250 2020-03-06

    最后此篇关于WordPress中Gravatar头像缓存到本地及相关优化的技巧的文章就讲到这里了,如果你想了解更多关于WordPress中Gravatar头像缓存到本地及相关优化的技巧的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com