Maison développement back-end tutoriel php WordPress中Gravatar头像缓存到本地及相关优化的技巧

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

May 16, 2016 pm 08:02 PM
wordpress 优化 头像

将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.&#39;/avatar/default.jpg&#39;, $e);
return $avatar;
}
add_filter(&#39;get_avatar&#39;, &#39;my_avatar&#39;);
Copier après la connexion

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

function validate_gravatar($email) {
 $hash = md5(strtolower(trim($email)));
 $uri = &#39;http://www.gravatar.com/avatar/&#39; . $hash . &#39;?d=404&#39;;
 $headers = @get_headers($uri);
 if (!preg_match("|200|", $headers[0])) {
 $has_valid_avatar = FALSE;
 } else {
 $has_valid_avatar = TRUE;
 }
 return $has_valid_avatar;
}
Copier après la connexion

Gravatar全球通用头像缓存优化

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

function my_avatar( $email, $size = &#39;32&#39;, $default = &#39;&#39;, $alt = &#39;&#39;) {
 $f = md5( strtolower( $email ) );
 // 以下代码将头像缓存到wp-content目录下
 $a = get_bloginfo(&#39;template_url&#39;) . &#39;/avatar/&#39;. $f . $size . &#39;.png&#39;;
 $e = get_template_directory() . &#39;/avatar/&#39; . $f . $size . &#39;.png&#39;;
 $d = get_template_directory() . &#39;/avatar/&#39; . $f . &#39;-d.png&#39;;
 // 如果要将头像缓存到当前主题目录下,请将3-5行代码改成:
 // $a = get_bloginfo(&#39;template_url&#39;) . &#39;/avatar/&#39;. $f . $size . &#39;.png&#39;;
 // $e = get_template_directory() . &#39;/avatar/&#39; . $f . $size . &#39;.png&#39;;
 // $d = get_template_directory() . &#39;/avatar/&#39; . $f . &#39;-d.png&#39;;

if($default==&#39;&#39;)
  $default = get_bloginfo(&#39;wpurl&#39;).&#39;avatar/default.jpg&#39;;
 
 $t = 2592000; // 缓存有效期30天, 这里单位:秒
 if ( !is_file($e) || (time() - filemtime($e)) > $t ) {
  if ( !is_file($d) || (time() - filemtime($d)) > $t ) {
   // 验证是否有头像
   $uri = &#39;http://www.gravatar.com/avatar/&#39; . $f . &#39;?d=404&#39;;
   $headers = @get_headers($uri);
   if (!preg_match("|200|", $headers[0])) {
    // 没有头像,则新建一个空白文件作为标记
    $handle = fopen($d, &#39;w&#39;);
    fclose($handle);
    $a = $default;
   }
   else {
    // 有头像且不存在则更新
    $r = get_option(&#39;avatar_rating&#39;);
    $g = &#39;http://www.gravatar.com/avatar/&#39;. $f. &#39;?s=&#39;. $size. &#39;&r=&#39; . $r;
    copy($g, $e);
   }
  }
  else {
   $a = $default;
  }
 }
 
 $avatar = "";
 return apply_filters(&#39;my_avatar&#39;, $avatar, $email, $size, $default, $alt);
}
Copier après la connexion

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

get_avatar( $comment,
Copier après la connexion

格式的话,还需要改成

my_avatar( $comment->comment_author_email
Copier après la connexion

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

更多相关教程请访问   php编程从入门到精通全套视频教程

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP vs Flutter : le meilleur choix pour le développement mobile PHP vs Flutter : le meilleur choix pour le développement mobile May 06, 2024 pm 10:45 PM

PHP et Flutter sont des technologies populaires pour le développement mobile. Flutter excelle dans les capacités multiplateformes, les performances et l'interface utilisateur, et convient aux applications qui nécessitent des performances élevées, une interface utilisateur multiplateforme et personnalisée. PHP convient aux applications côté serveur avec des performances inférieures et non multiplateformes.

Dans quel dossier se trouvent les articles wordpress ? Dans quel dossier se trouvent les articles wordpress ? Apr 16, 2024 am 10:29 AM

Les publications WordPress sont stockées dans le dossier /wp-content/uploads. Ce dossier utilise des sous-dossiers pour classer différents types de téléchargements, notamment les articles organisés par année, mois et ID d'article. Les fichiers d'articles sont stockés au format texte brut (.txt) et le nom de fichier inclut généralement son identifiant et son titre.

Où se trouve le fichier de modèle WordPress ? Où se trouve le fichier de modèle WordPress ? Apr 16, 2024 am 11:00 AM

Les fichiers de modèles WordPress se trouvent dans le répertoire /wp-content/themes/[theme name]/. Ils sont utilisés pour déterminer l'apparence et les fonctionnalités du site Web, notamment l'en-tête (header.php), le pied de page (footer.php), le modèle principal (index.php), l'article unique (single.php), la page (page.php). , Archive (archive.php), catégorie (category.php), balise (tag.php), recherche (search.php) et page d'erreur 404 (404.php). En éditant et en modifiant ces fichiers, vous pouvez personnaliser l'apparence de votre site WordPress

Quelle version de wordpress est stable ? Quelle version de wordpress est stable ? Apr 16, 2024 am 10:54 AM

La version WordPress la plus stable est la dernière version car elle contient les derniers correctifs de sécurité, des améliorations de performances et introduit de nouvelles fonctionnalités et améliorations. Pour mettre à jour vers la dernière version, connectez-vous à votre tableau de bord WordPress, accédez à la page Mises à jour et cliquez sur Mettre à jour maintenant.

WordPress doit-il être enregistré ? WordPress doit-il être enregistré ? Apr 16, 2024 pm 12:07 PM

WordPress nécessite une inscription. Selon les « Mesures de gestion de la sécurité Internet » de mon pays, les sites Web qui fournissent des services d'information sur Internet dans le pays doivent s'enregistrer auprès du bureau provincial local d'information sur Internet, y compris WordPress. Le processus d'enregistrement comprend des étapes telles que la sélection d'un fournisseur de services, la préparation des informations, la soumission d'une demande, l'examen et la publication, ainsi que l'obtention d'un numéro d'enregistrement. Les avantages du dépôt incluent la conformité légale, l’amélioration de la crédibilité, le respect des exigences d’accès, la garantie d’un accès normal, etc. Les informations de dépôt doivent être véridiques et valides, et doivent être mises à jour régulièrement après le dépôt.

Optimisation des programmes C++ : techniques de réduction de la complexité temporelle Optimisation des programmes C++ : techniques de réduction de la complexité temporelle Jun 01, 2024 am 11:19 AM

La complexité temporelle mesure le temps d'exécution d'un algorithme par rapport à la taille de l'entrée. Les conseils pour réduire la complexité temporelle des programmes C++ incluent : le choix des conteneurs appropriés (tels que vecteur, liste) pour optimiser le stockage et la gestion des données. Utilisez des algorithmes efficaces tels que le tri rapide pour réduire le temps de calcul. Éliminez les opérations multiples pour réduire le double comptage. Utilisez des branches conditionnelles pour éviter les calculs inutiles. Optimisez la recherche linéaire en utilisant des algorithmes plus rapides tels que la recherche binaire.

Comment supprimer un modèle de thème dans WordPress Comment supprimer un modèle de thème dans WordPress Apr 16, 2024 am 02:36 AM

Pour supprimer un modèle de thème WordPress, connectez-vous d'abord à votre tableau de bord, puis accédez à Apparence > Editeur de thème, sélectionnez le thème que vous souhaitez supprimer, cliquez sur Supprimer et confirmez, et activez éventuellement le nouveau thème.

Qu'est-ce que la base de données d'articles wordpress ? Qu'est-ce que la base de données d'articles wordpress ? Apr 16, 2024 am 11:12 AM

WordPress utilise MySQL comme base de données d'articles, ses principales fonctions incluent : le stockage des articles, des commentaires, des utilisateurs et des données de configuration du site Web. Les tableaux de données incluent : wp_posts (articles), wp_postmeta (métadonnées), wp_comments (commentaires), wp_commentmeta (métadonnées de commentaires), wp_users (utilisateurs). La base de données est accessible et gérée via phpMyAdmin ou la ligne de commande, et il est crucial de sauvegarder régulièrement la base de données pour éviter toute perte de données.

See all articles