私はget_avatar
関数を使って異なる幅と高さを設定しようとしています。 single.php
の作者のアバターを60x40のサイズに設定する必要があります。
それでは、グラバターが次のようになっているとしましょう。
60×40に設定すると、次のようになります(サイズ変更および切り取り)。
ただし、デフォルトのget_avatar
では、幅と高さに異なる値を使用できないようです。
<?php echo get_avatar( $comment, '60' ); ?>
単に60x60サイズのグラバターになるでしょう。
これがこれを行うのに適した方法かどうかはわかりませんが、TimThumb画像リサイズを容易にすることによってこれをfunctions.php
に追加してみました(私は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;
}
しかし、それは(明らかに思われるように)機能しません。
これを達成する方法はありますか?
@Rarstから通知されているように、現在Gravatarはsizeに1つの値しか受け入れないようです。本当に残念です。しかし、私はtimthumb.php
とここで見つけた関数を容易にすることによってこれを回避することに成功しました: 単独でgravatarのURLを取得する方法
これがこれを行うのが最善の方法であるかどうかわからない(それが厄介に見えます)、しかしこれは60x40 pxサイズを作成するために私には働きます。ただし、他のサイズで試したときにはうまくいかないようです。理由がわからない。
さて、ここに行きます。
最初に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
(ここで私はグラバターを表示します)にこれを入れます:
<?php
custom_gravatar_timthumb(60, 40, "author-avatar avatar photo");
?>
残念ながら、現時点ではGravatarサービス自体は サイズについて単一の数字しか受け付けていません および正方形の画像のみを提供しています。
だからあなたはCSSでそれを達成するか、画像をダウンロード、修正、そしてキャッシュしなければなりません。
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 );