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 ? », 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!
Commentaires
Commentaire de Julio Potier @ BoiteAWeb.
Hey
Pas mieux. On pourrait se dire « oui mais get_avatar() est pluggable donc il suffit d’ajouter un paramètre « only_url » par exemple pur que cela ne retourne que l’URL »
Alors oui ça serait plus simple que de faire une regex, mais .. et si un autre plugin devait aussi la plugger ? Terminé on est coincé.
Ici on peut donc toujours récupérer l’url même si la fonction a été pluggé. Je dis ça car, de 1, les pluggables sont un regret de WordPress, plus jamais ils vont en ajouter, 2, le problème du multiplug cité fait bien ch***, 3 mon plugin http://wordpress.org/plugins/baw-gravatar-google-image/ plugge cette fonction :/
Sinon pour le blog, je pense aussi que faire part de tes découvertes sous forme d’astuces est mieux. Nice one, je sais qu’en venant ici je vais trouver du contenu de qualité :D
Commentaire de Grégory Viguier.
Hoy
1- Bah oui, cette fonction marchera avec ton plugin (ho c’est beau).
2- Merci :)
Commentaire de Rovita R. Utujerorifo @ Christus.
Bonjour,
D’une manière plus générale : Vous n’avez pas constaté de bugs d’affichage avec la fonction get_avatar() ?
Chez moi les images d’un profil ne s’affichent pas sur les pages spécifiques d’un thème (les pages autres que single.php, page.php, 404.php, category.php, etc…). Et je n’arrive pas à avoir de retour sur cette question sur les blogs et forums consultés.
Commentaire de Grégory Viguier.
Salut.
Jamais eu de problème de mon côté. Le soucis subsiste avec un autre thème ? Qu’en est-il des plugins ?
Commentaire de Rovita R. Utujerorifo @ Christus.
Le seul plugin que j’utilise me sert à générer un sitemap. Pour le test d’un autre thème, je ne sais pas : ceux que j’ai testé utilisaient tous les pages par défaut. Moi j’utilise des gabarits persos en les déclarant selon ce qui est spécifié ici :
http://codex.wordpress.org/Page_Templates
Commentaire de Grégory Viguier.
A part fouiller dans ton template et déboguer (peut-être que l’ID/email de l’utilisateur n’est pas bon ?), je ne vois que ça.
Commentaire de Rovita R. Utujerorifo @ Christus.
Je ne vois pas… l’image du gravatar s’affiche correctement sur les autres gabarits de pages du site. J’ai une image le « l’homme inconnu » sur les autres…
Quoi qu’il en soit, merci quand même.
Commentaire de Grégory Viguier.
Comme je l’ai dit plus haut, je pense que les paramètres donnés à la fonction ne sont pas bon, le template ne doit pas lui donner le bon ID ou email. Vu les symptômes, je ne vois que ça.
A part ça, félicitations, ton commentaire est le 1000ème du blog :D (tu as droit à tout mon respect pour ça).
Commentaire de Rovita R. Utujerorifo @ Christus.
Les commentaires ne font que refléter la qualité de ton blog.
Alors félicitation à toi… et bonne année !