私は私のユーザーの画像を出力するためにget_avatar()
を使っています。
参照: https://codex.wordpress.org/Function_Reference/get_avatar
オプションのsizeパラメータでサイズを指定できます。しかし、これは正方形のアバターになります。
長方形のアバターを出力するにはどうすればいいですか。幅300ピクセル、高さ150ピクセルのようなものですか?
私の知る限りでは、get_avatar()関数は平方値のみを許可します。長方形のアバターを表示するためにスタイルを使用できないという意味ではありません。基本的には、幅から150ピクセルを「削り取る」ためにスタイリングを使用します。
そのため、次のコードを使用して、投稿ファイルのテーマファイルに300 x 300ピクセルのアバターが作成されたとします。
<?php echo get_avatar( get_the_author_meta( 'ID' ), 300 ); ?>
その場合は、アバター画像をDIVタグで囲むだけで、スタイルを設定できます。
<div class="auth-avatar">
<?php echo get_avatar( get_the_author_meta( 'ID' ), 300 ); ?>
</div>
次に、CSSを使用して画像をトリミングして中央に配置します。
.auth-avatar {
width: 300px;
height: 150px;
overflow: hidden;
}
.auth-avatar img {
width: 100%
}
これでうまくいくはずです。これが結果をいじることです。
ポイント(別名問題)は、サイズ変更があなたのサーバーで起こらないということです。それはgravatarからサーバー上で起こります:
http(s)://*.gravatar.com
source を参照 - s
と呼ばれる問い合わせ引数を使用して。それで、あなたが何をしても、Gravatarは1pxから2048pxの間の大きさの正方形の画像を返します。
"$Host/avatar/ad516503a11cd5ca435acc9bb6523536?s={$size}";
Gravatarには API がありません...これはできません - あなたをがっかりさせて申し訳ありません。
したがって、その場合の唯一の解決策はCSSです - BUT...あなたはフィルタを使ってまったく異なるアバターを使用します。
return apply_filters( 'get_avatar', $avatar, $id_or_email, $size, $default, $alt );
理論的には(テストされていない)、次のようなことができます。
add_filter( 'get_avatar', 'wpse139329ResizedAvatar', 10, 5 );
function wpse139329ResizedAvatar( $avatar, $id_or_email, $size, $default, $alt )
{
$newAvatar = wp_get_image_editor( $avatar );
if ( is_wp_error( $newAvatar ) )
return $avatar;
$newAvatar->resize( 500, 100, true );
$info = pathinfo( $avatar );
$newAvatar->save( $info['filename'].$info['extension'] );
return $newAvatar;
}
とにかく、それは上に示した線に沿って機能するはずです。
欠点は、Gravatarsを完全にオフにする以外に、コアが何もサポートしていないことです。その理由は簡単に推測できます。WordPress.comはGravatar.com(およびVaultpressのような他のいくつかの会社)を所有しているのと同じ人が所有しています。そのため、サーバーからリモートでフェッチされた(遅延を含む)Gravatarが残り、その後はまったく使用されません。
実際、関数get_gravatar()
は "プラグイン可能"です:
if ( !function_exists( 'get_avatar' ) ) :
そのため、上書きした場合は、ユーザーにアバターを表示する別の方法で完全に置き換えることができます。自分で作って、それを行うプラグインをつかむなど.
参照: Gravatar Images 、Gravatarは正方形の画像しかサポートしていません。関数参照 get_avatar() でも単一の引数を指定します。
あなたが本当にそれをやりたいのであればしかし、最良の選択肢はCSSでそれをするだろう、と思います。