Est-il possible pour un site WordPress d'afficher l'image Gravatar par défaut de l'utilisateur (de l'ensemble choisi, par exemple Rétro, Identicon, etc.), plutôt que l'avatar téléchargé par l'utilisateur? Comme dans, tous les avatars des utilisateurs à côté des commentaires sont des images "Rétro" générées, qu'ils aient ou non un avatar personnalisé sur Gravatar.
Capture d'écran des paramètres en question:
Étant donné que ces avatars par défaut sont générés en fonction du courrier électronique de l'utilisateur, je me demandais s'il était toujours possible de les générer ou si Gravatar renvoyait ces avatars générés par défaut plutôt que l'avatar personnalisé de l'utilisateur.
Trouvé, vous pouvez créer l'adresse manuellement pour renvoyer l'image à partir de Gravatar, et passer des paramètres pour forcer les valeurs par défaut et le thème. Cela a été combiné en partie avec la réponse de @ Sudar, ainsi que le code de pluggable.php
car la page d'administration récupérera l'ID et non le courrier électronique de $id_or_email
;.
function custom_get_avatar($avatar, $id_or_email, $size, $default, $alt) {
if ( is_admin() ) {
$email = '';
if ( is_numeric($id_or_email) ) {
$id = (int) $id_or_email;
$user = get_userdata($id);
if ( $user )
$email = $user->user_email;
} elseif ( is_object($id_or_email) ) {
// No avatar for pingbacks or trackbacks
$allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) )
return false;
if ( !empty($id_or_email->user_id) ) {
$id = (int) $id_or_email->user_id;
$user = get_userdata($id);
if ( $user)
$email = $user->user_email;
} elseif ( !empty($id_or_email->comment_author_email) ) {
$email = $id_or_email->comment_author_email;
}
} else {
$email = $id_or_email;
}
$md5address = md5( strtolower( trim( $email ) ) );
return '<img width="'.$size.'" height="'.$size.'" src="http://www.gravatar.com/avatar/' . $md5address . '?d=retro&f=y" />';
}
else {
$md5address = md5( strtolower( trim( $id_or_email ) ) );
return '<img width="'.$size.'" height="'.$size.'" src="http://www.gravatar.com/avatar/' . $md5address . '?d=retro&f=y" />';
}
}
add_filter('get_avatar', 'custom_get_avatar', 10, 5);
Lire la suite:
Oui c'est possible.
Ajoutez simplement une fonction au hook get_avatar
function change_avatar($avatar, $id_or_email, $size, $default, $alt) {
return 'url_to_your_retro_image';
}
add_filter('get_avatar', 'change_avatar', 10, 5);
De nos jours, c'est beaucoup plus facile grâce à get_avatar_data()
qui est appelée par get_avatar()
:
function wpse75380_force_default_avatar( $args ) {
$args['force_default'] = true;
return $args;
}
add_filter( 'get_avatar_data', 'wpse75380_force_default_avatar' );