ユーザーがアバターをアップロードするのではなく、WordPressサイトにユーザーのデフォルトのGravatar画像(選択されたセット、例えばRetro、Identiconなど)を表示することは可能ですか?同様に、コメントの横にあるすべてのユーザーアバターは、Gravatarにカスタムアバターがあるかどうかにかかわらず、生成された「レトロ」な画像になります。
問題の設定のスクリーンショット:
これらのデフォルトのアバターはユーザーの電子メールに基づいて生成されるので、それらを生成すること、またはユーザーのカスタムアバターではなくGravatarにこれらのデフォルトの生成されたアバターを返させることが可能かどうか疑問に思いました。
Gravatarから画像を返すためにアドレスを手動で作成し、デフォルトとテーマを強制するためのパラメータを渡すことができます。これを@ Sudarの回答、および管理ページとしてのpluggable.php
からのコードと組み合わせることで、$id_or_email
からの電子メールではなくIDが取得されるため、管理ページに正しいアバターが表示されるようにチェックを追加する必要があります。
function custom_get_avatar($avatar, $id_or_email, $size, $default, $alt) {
if ( is_admin() ) {
$email = '';
if ( is_numeric($id_or_email) ) {
$id = (int) $id_or_email;
$user = get_userdata($id);
if ( $user )
$email = $user->user_email;
} elseif ( is_object($id_or_email) ) {
// No avatar for pingbacks or trackbacks
$allowed_comment_types = apply_filters( 'get_avatar_comment_types', array( 'comment' ) );
if ( ! empty( $id_or_email->comment_type ) && ! in_array( $id_or_email->comment_type, (array) $allowed_comment_types ) )
return false;
if ( !empty($id_or_email->user_id) ) {
$id = (int) $id_or_email->user_id;
$user = get_userdata($id);
if ( $user)
$email = $user->user_email;
} elseif ( !empty($id_or_email->comment_author_email) ) {
$email = $id_or_email->comment_author_email;
}
} else {
$email = $id_or_email;
}
$md5address = md5( strtolower( trim( $email ) ) );
return '<img width="'.$size.'" height="'.$size.'" src="http://www.gravatar.com/avatar/' . $md5address . '?d=retro&f=y" />';
}
else {
$md5address = md5( strtolower( trim( $id_or_email ) ) );
return '<img width="'.$size.'" height="'.$size.'" src="http://www.gravatar.com/avatar/' . $md5address . '?d=retro&f=y" />';
}
}
add_filter('get_avatar', 'custom_get_avatar', 10, 5);
続きを読む:
ええ、それは可能です。
get_avatar
フックに関数を追加するだけです
function change_avatar($avatar, $id_or_email, $size, $default, $alt) {
return 'url_to_your_retro_image';
}
add_filter('get_avatar', 'change_avatar', 10, 5);
今日では、get_avatar_data()
によって呼び出されている get_avatar()
のおかげで、はるかに簡単になりました。
function wpse75380_force_default_avatar( $args ) {
$args['force_default'] = true;
return $args;
}
add_filter( 'get_avatar_data', 'wpse75380_force_default_avatar' );