WordPress: Gérer votre avatar localement

Depuis quelques jours, mon avatar sur ce blog, n’est plus l’habituelle petite silhouette grise et blanche. En attendant d’avoir une idée originale, j’ai remplacé l’image par défaut, par le logo du site. Ne souhaitant pas utiliser un service comme Gravatar, j’ai trouvé un filtre me permettant de remplacer l’avatar par défaut, par celui de mon choix.

L’astuce consiste à utiliser le filtre get_avatar, lancé par WordPress, à la fin de la fonction du même nom. Pour les curieux, cette fonction se trouve dans le fichier wp-admin/pluggable.php.

Ce filtre reçoit 5 paramètres:

  • $avatar: le code HTML généré par la fonction get_avatar,
  • $id_or_email: l’identifiant, ou l’adresse de messagerie de celui dont on veut afficher l’avatar,
  • $size: la taille de l’image,
  • $default: l’image par défaut utilisée en l’abscence d’avatar,
  • $alt: le texte a placer dans l’attribut alt de l’image.

Vous devez d’abord créer votre avatar, et le stocker dans un endroit accessible. Le plus simple et de stocker cette image dans le répertoire (ou un sous-répertoire) de votre thème.

L’astuce consiste ensuite a éditeur le fichier function.php de votre thème, en y ajoutant le code suivant:

function my_get_avatar( $avatar, $id_or_email='', $size = '96', $default = '', $alt = false) {
             $email_list  = array( 'xxx@yyy', 'www@zzz');
             $avatar_url = get_bloginfo('template_url').'my_avatar.png';
 
	$mail = FALSE;
	if (is_object($id_or_email))
		$mail = $id_or_email->comment_author_email;
	elseif (is_string($id_or_email) || is_numeric($id_or_email))
		$mail = $id_or_email;
 
	if ($mail !== FALSE) {
		if (array_search($mail, $email_list) !== FALSE ) {
			$avatar = '<img class="avatar avatar-'.$size.' photo" src="'.$avatar_url.'" alt="" width="'.$size.'" height="'.$size.'" />';
		}
	}
	return ($avatar);
}

Cette fonction va chercher une image qui s’appelle my_avatar.png, située à la racine du thème courant. Remplacez la ligne $avatar_url = ... par l’url de votre choix.

Il ne reste plus qu’à « brancher » cette fonction à WordPress (toujours dans le fichier function.php:

add_filter('get_avatar', ' my_get_avatar', 10, 5);

Cette petite astuce ne s’applique qu’au blog mono-auteur, puisqu’elle associe une série d’addresses, à une image unique. Pour gérer plusieurs auteurs, il faudrait modifier la fonction, pour mémoriser un avatar par jeux d’adresses mail. L’opération n’est pas plus compliquée, que celle présentée ici, mais il vaut mieux, dans ce cas, utiliser les services existants, pour ne pas créer de tâches de maintenance supplémentaires.

2 thoughts on “WordPress: Gérer votre avatar localement”

  1. Mon idée initiale était de ne pas faire appel à un service extérieur, susceptible de ralentir un peu plus le site, mais cette idée n’est pas tout à fait juste.
    J’utiliserai certainement Gravatar, parce qu’une utilisation locale a finalement trop d’inconvénients.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *