Contenu principal

Url d’un avatar avec get_avatar_url()

Salut.

Écrire de longs articles ou tutoriels me prends énormément de temps, et comme beaucoup, j’en manque. Donc je me suis dit « Et si je faisais de trucs plus courts, genre je découvre une petite astuce et pouf, je poste sur le blog&#160? », du coup cela me permet de ne pas laisser le blog inactif durant de longues semaines entre deux tutos.

Donc voici ma dernière petite trouvaille, une petite fonction qui ne servira peut-être pas à tout le monde mais qui manquait depuis fort longtemps dans ma boite à outils. Vous connaissez peut-être get_avatar() qui retournera une balise <img/>, mais j’ai parfois eu seulement besoin de l’url de l’avatar, pas de l’image entière. Voici qui résoudra le problème :

010203040506070809101112131415

if ( !function_exists('get_avatar_url') ):
function get_avatar_url( $id_or_email, $size = '96', $default = '', $alt = false ) {
	add_filter( 'get_avatar', 'sf_get_avatar_url_filter', PHP_INT_MAX, 5 );
	$url = get_avatar( $id_or_email, $size, $default, $alt );
	remove_filter( 'get_avatar', 'sf_get_avatar_url_filter', PHP_INT_MAX );
	return $url;
}
endif;


if ( !function_exists('sf_get_avatar_url_filter') ):
function sf_get_avatar_url_filter( $avatar, $id_or_email, $size, $default, $alt ) {
	return preg_match( '|<img.*src=[\'"]([^\'"]+)[\'"].*/>|i', $avatar, $matches ) ? $matches[1] : $default;
}
endif;

Son utilisation est identique à get_avatar() mais retournera donc l’url d’un avatar plutôt que la balise <img/> entière.

123

$id_or_email = 12;	// ID user
$size = 24;		// 24px
echo get_avatar_url( $id_or_email, $size );

See ya!