#未検証
ユーザーIDを元に画像のパスを指定する場合:
例)画像ファイルのパスを
テーマフォルダ/images/avatar-ユーザーID.jpg
とします。
だいたい以下のようなコードをテーマの functions.php に追加すれば OK◎
<?php
add_filter( 'get_avatar', 'my_get_avatar', 10, 5);
function my_get_avatar( $avatar, $id_or_email, $size, $default, $alt) {
if ( is_numeric( $id_or_email ) ) {
$id = (int) $id_or_email;
} elseif ( is_object( $id_or_email ) ) {
if ( !empty( $id_or_email->user_id ) ) {
$id = (int) $id_or_email->user_id;
}
}
if ( $id ) {
$src = get_bloginfo('stylesheet_directory') . '/images/avatar-' . $id . '.jpg';
$avatar = "<img src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
return $avatar;
}
?>
回答ありがとうございます!
if ( $id ) {
$src = get_bloginfo('stylesheet_directory') . '/images/avatar-' . $id . '.jpg';
$avatar = "<img src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
↑の部分にユーザーIDと画像を指定すればいんですね。
これって複数のユーザーの場合どうすればいいでしょうか?
if ( $id ) {
$src = get_bloginfo('stylesheet_directory') . '/images/avatar-' . $id . '.jpg';
$avatar = "<img src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
if ( $id ) {
$src = get_bloginfo('stylesheet_directory') . '/images/avatar-' . $id . '.jpg';
$avatar = "<img src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
といった感じにifをもう一つ追加すればいんでしょうか?
変数 $id に現在ログインしているユーザーの ID が入るので、
そのままで何も変えなくても複数ユーザー対応済です。
あとは、各ユーザーの画像を例えば
テーマフォルダ/images/avatar-ユーザーID.jpg
な感じで用意すれば OK。
例)
ユーザーが 3人いて、それぞれユーザーIDが
AさんのユーザーID:3
BさんのユーザーID:4
CさんのユーザーID:5
だったら、以下のように3つ画像を用意します。
テーマフォルダ/images/avatar-3.jpg
テーマフォルダ/images/avatar-4.jpg
テーマフォルダ/images/avatar-5.jpg
functions.php に追加したことろ以下のタグを追加したことろ
<?php
add_filter( 'get_avatar', 'my_get_avatar', 10, 5);
function my_get_avatar( $avatar, $id_or_email, $size, $default, $alt) {
if ( is_numeric( $id_or_email ) ) {
$id = (int) $id_or_email;
} elseif ( is_object( $id_or_email ) ) {
if ( !empty( $id_or_email->user_id ) ) {
$id = (int) $id_or_email->user_id;
}
}
if ( $id ) {
$src = get_bloginfo('stylesheet_directory') . '/images/avatar-' . $id . '.jpg';
$avatar = "<img src='{$src}' class='avatar avatar-{$size} photo' height='{$size}' width='{$size}' />";
}
return $avatar;
}
?>
画面が真っ白になってしまいました…。
何がダメだったんでしょうか??
それと少し話が変わるんですが、
「Gravatar」を別のサイトで使用しようと思い、登録をしたら
メルアドが同じため、こちらのWPのサイトにも反映されてしまいました、
「Gravatar」を反映しないようにするにはどうすればよいのでしょうか?
動作は検証済なので、以下を確認:
・テーマフォルダにある functions.php に追加している。
・<?php
と ?>
で囲まれてる中にそのまま追加していない。
<?php
と ?>
で囲まれてる中に追加するなら、
上記コードの <?php
と ?>
は除く。
・テーマフォルダにある functions.php に追加している。
・<?phpと ?> で囲まれてる中にそのまま追加していない。
<?phpと ?> で囲まれてる中に追加するなら、
上記コードの <?phpと ?> は除く。
以上のことを確認してみましたが、うまく表示することできませんでした。
(私のやり方がおかしいのかもしれませんが…)
いろいろ自分でも調べていたら、簡単にユーザーの画像を設定できる
「User Avatar」というプラグインを発見したので、そちらを利用することにしました。
kzさん、本当にありがとうございました。