Salut.
Alors voilà : sur mon WP j'ai des utilisateurs avec des gravatars, et d'autres avec des avatars stockés localement sur mon WP (dans /upoads/…), dont les adresses email ne sont pas associées à des gravatars.
get_avatar() retourne un tag <img> avec un attribut src qui mène vers le bon avatar : si l'utilisateur a un gravatar src mène vers une url gravatar, si l'utilisateur a un avatar local, l'attribut src mène vers l'adresse locale.
C'est super !
get_avatar_url() lui en revanche retourne systématiquement une adresse gravatar. Même pour les utilisateurs qui ont un avatar local : ça retourne une adresse gravatar qui affiche une icône de profil gravatar par défaut :
.
Alors j'ai regardé dans la fonction get_avatar(), notamment ce passage :
$avatar = sprintf(
"<img alt='%s' src='%s' srcset='%s' class='%s' height='%d' width='%d' %s/>",
esc_attr( $args['alt'] ),
esc_url( $url ),
esc_attr( "$url2x 2x" ),
esc_attr( join( ' ', $class ) ),
(int) $args['height'],
(int) $args['width'],
$args['extra_attr']
);
return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
Si je fais un echo sur $url, j'obtiens TOUJOURS une url gravatar.
Mais le apply_filters semble être magique puisque grâce à ça la fonction retourne une image avec la bonne url, gravatar OU local.
Et donc je comprends rien. Pourquoi ? Comment ?
Et surtout : comment est-ce que je peux simplement demander à WP de me retourner l'avatar d'un utilisateur, qu'il soit local ou gravatar? C'est quasiment ce que fait get_avatar(), à ceci près qu'il me retourne un tag image et non pas une url. Et qu'à aucun moment dans la fonction je n'ai trouvé d'url locale à coups de var_dump.
Si quelqu'un a une idée, je suis très preneur.