J'ai essayé de définir une largeur et une hauteur différentes à l'aide de la fonction get_avatar
. Je dois définir l'avatar de l'auteur en single.php
à la taille 60x40.
Alors disons que le gravatar ressemble à ceci:
lorsqu'il est défini sur 60x40, il ressemble à ceci (redimensionné et recadré):
Cependant, get_avatar
par défaut ne semble pas autoriser des valeurs différentes pour la largeur et la hauteur, car
<?php echo get_avatar( $comment, '60' ); ?>
aboutirait simplement à un gravatar de taille 60x60.
Je ne sais pas si c'est une bonne façon de faire cela, mais j'ai essayé d'ajouter ceci à functions.php
, en facilitant le redimensionneur d'images TimThumb (j'ai renommé le timthumb.php
en display.php
):
add_filter('get_avatar','change_avatar_url');
function change_avatar_url($urel) {
$urel = str_replace("src='", "src='". bloginfo( 'template_directory' ) ."/script/display.php?src=", $urel);
$urel = str_replace("' class", "&w=60&h=40&zc=1' class", $urel);
return $urel;
}
mais cela (semble évidemment) ne fonctionne pas.
Y'a-t-il une quelconque façon de réussir cela?
Selon les informations fournies par @Rarst, apparemment, Gravatar n'accepte qu'une valeur pour la taille. C'est vraiment dommage. Cependant, j'ai réussi à contourner cela en facilitant timthumb.php
et une fonction que j'ai trouvée à partir d'ici: Comment obtenir l'URL de gravatar seul
Je ne suis pas sûr que ce soit la meilleure façon de le faire (cela a l'air malpropre), cependant cela fonctionne pour moi pour créer une taille de 60x40 px. Cela ne semble pas bien fonctionner quand j'ai essayé avec d'autres tailles, cependant. Pas certain de pourquoi.
Eh bien, voici.
D'abord, j'ajoute gravatar.com
dans la liste des sites autorisés dans timthumb.php
(j'ai renommé le fichier en display.php
). La liste est sous le $ALLOWED_SITES
.
Puis dans functions.php
je mets ceci (remarque que je renomme le timthumb.php
en display.php
):
// Get the gravatar URL
// source: https://wordpress.stackexchange.com/questions/46904/how-to-get-gravatar-url-alone
function get_gravatar_url( $email ) {
$hash = md5( strtolower( trim ( $email ) ) );
return 'http://gravatar.com/avatar/' . $hash;
}
// Function to display the custom-sized gravatar
function custom_gravatar_timthumb($width, $height, $class) {
$custom = get_template_directory_uri() . "/script/display.php?src=". get_gravatar_url(get_the_author_meta('email')) ."w=". $width ."&h=". $height ."&zc=1&a=c";
echo "<img src='" . $custom . "' class='". $class ."' alt='avatar' />";
}
Puis dans single.php
(où j'affiche le gravatar), j'ai mis ceci:
<?php
custom_gravatar_timthumb(60, 40, "author-avatar avatar photo");
?>
Malheureusement, pour le moment, le service Gravatar lui-même accepte uniquement un nombre unique pour la taille } et ne sert que des images carrées.
Vous devez donc le réaliser avec CSS ou télécharger, modifier et mettre en cache les images.
apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);
Donc, vous pouvez filtrer la sortie:
function wpse69318_avatar_sizes( $avatar, $id_or_email, $size, $default, $alt )
{
if ( is_single() )
return preg_replace( '/width\=\"[0-9]{1,3}\"/i', 'width="40px"', $avatar );
// return default for other pages
return $avatar
}
add_filter( 'get_avatar', 'wpse69318_avatar_sizes', 10, 5 );