国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

WordPress中Gravatar頭像緩存到本地及相關優化的技巧

2024-05-04 23:41:08
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了WordPress中Gravatar頭像緩存到本地及優化的技巧,需要的朋友可以參考下
 

將Gravatar全球通用頭像緩存的目的在于加快網站的打開速度,因為Gravatar官網的服務器在國外,加上偉大的GFW,國內打開速度經常很慢。方法來自willin,不過貌似他的網站已經打不開了- -
 
將Gravatar全球通用頭像緩存到本地

 
緩存方法如下:

1.建立緩存目錄
在WordPress根目錄建立一個名為 avatar的文件夾,設置該文件夾的權限為 0755 (如果 0755 不行,就試一下 0777)。

2.設置默認頭像
準備一張大小適合(32*32即可)的默認頭像,命名為"default.jpg" ,放在 avatar 文件夾里面。

3.添加緩存代碼
將下面的代碼復制到主題的 functions.php 文件中即可

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頭像:

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頭像時,默認頭像重復緩存成多個文件造成資源浪費和重復連接的問題。優化后的代碼如下

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 return apply_filters('my_avatar', $avatar, $email, $size, $default, $alt);}

使用這個方法需要在主題所有文件中,將 get_avatar 函數替換為 my_avatar 。
而且如果是

get_avatar( $comment,

格式的話,還需要改成

my_avatar( $comment->comment_author_email

因為my_avatar函數只能通過Email來調取用戶頭像,所以以上情況,需要將第一個參數改成email地址。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元谋县| 垦利县| 南漳县| 东海县| 晋宁县| 浮梁县| 屯门区| 信宜市| 洛川县| 庆云县| 丰宁| 蒙自县| 梨树县| 嫩江县| 类乌齐县| 灵寿县| 象山县| 瑞安市| 牟定县| 安徽省| 饶阳县| 南阳市| 托克托县| 孝义市| 郑州市| 哈密市| 甘南县| 肥乡县| 密山市| 江源县| 金坛市| 文成县| 北辰区| 富锦市| 五大连池市| 宿松县| 浮山县| 汨罗市| 武山县| 上高县| 镇远县|