我一直在尝试使用get_avatar
作用我需要设置作者的头像single.php
尺寸为60x40。
让我们假设gravatar看起来像这样:
当设置为60x40时,它将如下所示(调整大小并裁剪):
但是,默认值get_avatar
似乎不允许不同的宽度和高度值,因为
<?php echo get_avatar( $comment, \'60\' ); ?>
只会产生60x60大小的gravatar。
我不确定这是否是一种很好的方法,但我尝试将此添加到functions.php
, 通过简化TimThumb图像大小调整器(我将timthumb.php
到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;
}
但它(似乎很明显)不起作用。
有没有办法做到这一点?
最合适的回答,由SO网友:deathlock 整理而成
据@Rarst告知,显然目前Gravatar只接受一个大小值。这真是不幸。然而,我通过促进timthumb.php
我在这里找到了一个函数:How to get gravatar url alone
我不确定这是否是最好的方法(看起来很凌乱),但是这对我创建60x40像素的大小很有用。不过,当我尝试其他尺码时,它似乎效果不佳。不知道为什么。
好了,开始吧。
首先我添加gravatar.com
进入中允许的站点列表timthumb.php
(我将文件重命名为display.php
). 该列表位于$ALLOWED_SITES
.
然后在functions.php
我把这个(注意我重命名了timthumb.php
到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\' />";
}
然后在
single.php
(在我显示gravatar的地方)我把它放在:
<?php
custom_gravatar_timthumb(60, 40, "author-avatar avatar photo");
?>
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 );