J'utilise le crochet de filtre avatar_defaults
pour filtrer la liste d'avatars par défaut. Par exemple:
function my_avatar_defaults( $avatar_defaults ) {
$avatar_defaults['http://example.com/foo.png'] = __( 'Foo' );
return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'my_avatar_defaults' );
Cela fonctionne car si je visite Paramètres> Discussion, puis que je fais défiler l'écran vers le bas, je peux voir que Foo a été ajouté en tant qu'option d'avatar par défaut. Voir la capture d'écran suivante pour un exemple:
Le problème est l'attribut src
de l'image affichée à côté de Foo. Il semble faire un appel à Gravatar. Voici un exemple de code source que je récupère pour l'image à côté de Foo:
<img src="http://0.gravatar.com/avatar/efaeb0e0be9922051a1c4ccce766a141?s=32&d=http%3A%2F%2Fexample.com%2Ffoo.png%3Fs%3D32&r=G&forcedefault=1" />
Comment puis-je m'assurer que l'attribut src
pointe vers l'URL de mon image au lieu de l'URL de Gravatar (qui semble contenir l'URL de mon image)?
Vous le faites correctement.
L'appel à gravatar.com transmet l'emplacement de votre image personnalisée afin que WP puisse la charger. Regardez la chaîne de requête dans le src, vous verrez l'emplacement de votre image. Ça fonctionne comme ça.
Deux notes:
get_avatar()
est une fonction "pluggable". Cela signifie que vous pouvez écrire un plug-in pour contenir une nouvelle fonction nommée get_avatar()
, qui écrasera alors la fonction d'origine utilisée par WP.get_avatar()
a également un filtre
return apply_filters( 'get_avatar', $avatar, $id_or_email, $size, $default, $alt );
que vous pouvez utiliser pour changer la valeur de retour:
add_filter( 'get_avatar', function( $html, $id, $size, $default, $alt )
{
// apply some changes here
return $html;
}, 10, 5 );
et cela signifie que vous pouvez simplement modifier également la sortie et supprimer l'appel src
en "Gravatar" afin que cela ne se produise pas.