J'ai essayé de mettre cet extrait dans mon functions.php
add_filter( 'avatar_defaults', 'newgravatar' );
function newgravatar ($avatar_defaults) {
$myavatar = get_bloginfo('template_directory') . '/images/default_avatar.png';
$avatar_defaults[$myavatar] = "Locale";
return $avatar_defaults;
}
Un nouvel avatar apparaît dans Options-Discussion. Le problème est que ce n’est pas du tout local. L’avatar est tiré de http://i1.wp.com/mydomain.com/wp-content/themes/mytheme/images/default_avatar.png
.
Donc, ça passe de toute façon avec i1.wp.com
.. comment puis-je avoir juste un lien LOCAL friggin?
Je me suis demandé comment faire cela moi-même et la même fonction décrite ci-dessus que tout le monde continue de suggérer ne fonctionne pas, peut-être en raison d'une mise à jour récente du code de base de WP, je ne suis pas tout à fait sûr. C'est un peu bidon et cela implique l'édition de fichiers de base (ce n'est pas bien) mais c'est une solution de contournement. Voici les étapes:
Faites défiler l'écran juste au-dessus du premier tag IMG, vous devriez voir ceci:
$out = str_replace( '&', '&', esc_url( $out ) );
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
Juste en dessous de $out
, ajoutez $out = $default;
. Cela passe essentiellement l’URL source de l’image par défaut (stocké dans la table des options)
Cela devrait donc ressembler à ceci:
$out = str_replace( '&', '&', esc_url( $out ) );
$out = $default;
$avatar = "<img alt='{$safe_alt}' src='{$out}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
} else {
$avatar = "<img alt='{$safe_alt}' src='{$default}' class='avatar avatar-{$size} photo avatar-default' height='{$size}' width='{$size}' />";
}
return apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
Encore une fois, ce n'est évidemment pas idéal, car la prochaine fois que vous mettrez à jour WordPress, vous perdrez ce changement. Mais pour le moment ça marche.
Pour les futurs visiteurs qui souhaitent ne pas modifier les fichiers de base, vous pouvez envisager de filtrer la fonction WP _ get_avatar
. Cela semble nécessiter de modifier la chaîne fournie dans le filtre avec une expression régulière pour supprimer le domaine gravatar. Je l'ai essayé mais je suis nul à regex. : P
Le module Photon est activé dans le plugin Jetpack. Ce module achemine vos images via le CDN de WordPress.com. Si vous ne souhaitez pas que cela se produise, désactivez le module Photon dans Jetpack.