it-swarm.com.de

Unterschiedliche Breite und Höhe für Gravatar einstellen

Ich habe versucht, mit der Funktion get_avatar eine andere Breite und Höhe einzustellen. Ich muss den Avatar des Autors in single.php auf die Größe 60x40 einstellen.

Angenommen, der Gravatar sieht folgendermaßen aus:

enter image description here

wenn 60x40 eingestellt ist, sieht es so aus (Größe geändert und beschnitten):

enter image description here

Der Standard get_avatar scheint jedoch keine unterschiedlichen Werte für Breite und Höhe zuzulassen, da

<?php echo get_avatar( $comment, '60' ); ?>

würde einfach zu einem 60x60-großen Gravatar führen.

Ich bin mir nicht sicher, ob dies ein guter Weg ist, aber ich habe versucht, dies zu functions.php hinzuzufügen, indem ich den TimThumb-Bild-Resizer ermöglichte (ich habe den timthumb.php in display.php umbenannt):

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;
}

aber es funktioniert (anscheinend) nicht.

Gibt es eine Möglichkeit, dies zu erreichen?

3
deathlock

Wie @Rarst mitteilt, akzeptiert Gravatar derzeit anscheinend nur einen Wert für die Größe. Es ist wirklich unglücklich. Ich habe es jedoch geschafft, dies zu umgehen, indem ich timthumb.php und eine Funktion, die ich von hier aus gefunden habe, erleichtert habe: Wie bekomme ich die Gravatar-URL alleine

Ich bin nicht sicher, ob dies der beste Weg ist (es sieht chaotisch aus), aber das funktioniert bei mir für die Erstellung von 60x40 px Größe. Es scheint jedoch nicht gut zu funktionieren, wenn ich es mit anderen Größen versuchte. Nicht sicher warum.

Gut geht hier.

Zuerst füge ich gravatar.com in die Liste der erlaubten Sites in timthumb.php ein (ich habe die Datei in display.php umbenannt). Die Liste befindet sich unter dem $ALLOWED_SITES.

Dann schreibe ich in functions.php Folgendes (beachte, dass ich den timthumb.php in display.php umbenenne):

// 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' />";
}

Dann schreibe ich in single.php (wo ich das Gravatar anzeige) folgendes:

<?php
custom_gravatar_timthumb(60, 40, "author-avatar avatar photo");
?>
1
deathlock

Leider akzeptiert der Gravatar-Service selbst nur einzelne Zahlen für die Größe und nur quadratische Bilder.

Sie müssen es also mit CSS erreichen oder Bilder herunterladen, ändern und zwischenspeichern.

2
Rarst
apply_filters('get_avatar', $avatar, $id_or_email, $size, $default, $alt);

So können Sie die Ausgabe filtern:

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 );
0
kaiser