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

首頁(yè) > CMS > Wordpress > 正文

WordPress中Gravatar頭像緩存到本地及相關(guān)優(yōu)化的技巧

2024-09-07 00:48:08
字體:
供稿:網(wǎng)友

這篇文章主要介紹了WordPress中Gravatar頭像緩存到本地及優(yōu)化的技巧,需要的朋友可以參考下。

將Gravatar全球通用頭像緩存的目的在于加快網(wǎng)站的打開速度,因?yàn)镚ravatar官網(wǎng)的服務(wù)器在國(guó)外,加上偉大的GFW,國(guó)內(nèi)打開速度經(jīng)常很慢。方法來自willin,不過貌似他的網(wǎng)站已經(jīng)打不開了- -

將Gravatar全球通用頭像緩存到本地

緩存方法如下:

1.建立緩存目錄

在WordPress根目錄建立一個(gè)名為 avatar的文件夾,設(shè)置該文件夾的權(quán)限為 0755 (如果 0755 不行,就試一下 0777)。

2.設(shè)置默認(rèn)頭像

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

3.添加緩存代碼

將下面的代碼復(fù)制到主題的 functions.php 文件中即可

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

通過Email判斷用戶是否有Gravatar頭像

很多時(shí)候,我們還需要知道用戶有沒有設(shè)置Gravatar,比如如果用戶沒有設(shè)置Gravatar頭像則直接顯示本地的默認(rèn)頭像,或者提醒沒有設(shè)置Gravatar的用戶設(shè)置Gravatar頭像,而不打擾已經(jīng)設(shè)置過頭像的用戶。今天分享的代碼可以通過Email地址來驗(yàn)證用戶是否有Gravatar頭像:

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

Gravatar全球通用頭像緩存優(yōu)化

優(yōu)化后的代碼可以避免用戶沒有設(shè)置Gravatar頭像時(shí),默認(rèn)頭像重復(fù)緩存成多個(gè)文件造成資源浪費(fèi)和重復(fù)連接的問題,優(yōu)化后的代碼如下:

  1. function my_avatar( $email$size = '32'$default = ''$alt = '') { 
  2.  $f = md5( strtolower$email ) ); 
  3.  // 以下代碼將頭像緩存到wp-content目錄下 
  4.  $a = get_bloginfo('template_url') . '/avatar/'$f . $size . '.png'
  5.  $e = get_template_directory() . '/avatar/' . $f . $size . '.png'
  6.  $d = get_template_directory() . '/avatar/' . $f . '-d.png'
  7.  // 如果要將頭像緩存到當(dāng)前主題目錄下,請(qǐng)將3-5行代碼改成: 
  8.  // $a = get_bloginfo('template_url') . '/avatar/'. $f . $size . '.png'; 
  9.  // $e = get_template_directory() . '/avatar/' . $f . $size . '.png'; 
  10.  // $d = get_template_directory() . '/avatar/' . $f . '-d.png'; 
  11.  
  12. if($default==''
  13.   $default = get_bloginfo('wpurl').'avatar/default.jpg'
  14.    
  15.  $t = 2592000; // 緩存有效期30天, 這里單位:秒 
  16.  if ( !is_file($e) || (time() - filemtime($e)) > $t ) { 
  17.   if ( !is_file($d) || (time() - filemtime($d)) > $t ) { 
  18.    // 驗(yàn)證是否有頭像 
  19.    $uri = 'http://www.gravatar.com/avatar/' . $f . '?d=404'
  20.    $headers = @get_headers($uri); 
  21.    if (!preg_match("|200|"$headers[0])) { 
  22.     // 沒有頭像,則新建一個(gè)空白文件作為標(biāo)記 
  23.     $handle = fopen($d'w'); 
  24.     fclose($handle); 
  25.     $a = $default
  26.    } 
  27.    else { 
  28.     // 有頭像且不存在則更新 
  29.     $r = get_option('avatar_rating'); 
  30.     $g = 'http://www.gravatar.com/avatar/'$f'?s='$size'&r=' . $r
  31.     copy($g$e); 
  32.    } 
  33.   } 
  34.   else { 
  35.    $a = $default
  36.   } 
  37.  } 
  38.    
  39.  $avatar = "<img alt='{$alt}' src='{$a}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />"
  40.  return apply_filters('my_avatar'$avatar$email$size$default$alt); 

使用這個(gè)方法需要在主題所有文件中,將 get_avatar 函數(shù)替換為 my_avatar 。

而且如果是:

get_avatar( $comment,格式的話,還需要改成

my_avatar( $comment->comment_author_email

因?yàn)閙y_avatar函數(shù)只能通過Email來調(diào)取用戶頭像,所以以上情況,需要將第一個(gè)參數(shù)改成email地址。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 高尔夫| 仁寿县| 鄂托克旗| 墨江| 正镶白旗| 北宁市| 九寨沟县| 临朐县| 额敏县| 灵川县| 双桥区| 滦平县| 苏州市| 甘德县| 永州市| 大悟县| 永安市| 广灵县| 阿拉尔市| 南昌县| 沂源县| 芦山县| 连江县| 鹤庆县| 浮山县| 巧家县| 准格尔旗| 泗水县| 云浮市| 精河县| 射阳县| 永城市| 三明市| 枞阳县| 鹤峰县| 榕江县| 百色市| 西宁市| 大关县| 枣庄市| 五指山市|