为重力头像设置不同的宽度和高度

时间:2012-10-15 作者:deathlock

我一直在尝试使用get_avatar 作用我需要设置作者的头像single.php 尺寸为60x40。

让我们假设gravatar看起来像这样:

enter image description here

当设置为60x40时,它将如下所示(调整大小并裁剪):

enter image description here

但是,默认值get_avatar 似乎不允许不同的宽度和高度值,因为

<?php echo get_avatar( $comment, \'60\' ); ?>
只会产生60x60大小的gravatar。

我不确定这是否是一种很好的方法,但我尝试将此添加到functions.php, 通过简化TimThumb图像大小调整器(我将timthumb.phpdisplay.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;
}
但它(似乎很明显)不起作用。

有没有办法做到这一点?

3 个回复
最合适的回答,由SO网友:deathlock 整理而成

据@Rarst告知,显然目前Gravatar只接受一个大小值。这真是不幸。然而,我通过促进timthumb.php 我在这里找到了一个函数:How to get gravatar url alone

我不确定这是否是最好的方法(看起来很凌乱),但是这对我创建60x40像素的大小很有用。不过,当我尝试其他尺码时,它似乎效果不佳。不知道为什么。

好了,开始吧。

首先我添加gravatar.com 进入中允许的站点列表timthumb.php (我将文件重命名为display.php). 该列表位于$ALLOWED_SITES.

然后在functions.php 我把这个(注意我重命名了timthumb.phpdisplay.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\' />";
}
然后在single.php (在我显示gravatar的地方)我把它放在:

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

SO网友:Rarst

不幸的是,目前Gravatar服务本身only accepts single number for size 并且只提供方形图像。

因此,您必须使用CSS或下载、修改和缓存图像来实现它。

SO网友:kaiser

apply_filters(\'get_avatar\', $avatar, $id_or_email, $size, $default, $alt);
因此,您可以过滤输出:

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

结束

相关推荐

Images in wp_mail not showing

我创建了一个发送电子邮件的插件:$subject = \'New comment - \'.$post_title; ob_start(); include(SUBSCRIBE_USER_BASE_DIR . \'/email/message.php\'); $message = ob_get_clean(); foreach($user_emails as $user_email){ $to = $user