サポート » 使い方全般 » コメント欄のミステリーマンを変更したい

  • 解決済 sui0205

    (@sui0205)


    お世話になります。
    テーマは、WSC 4.3を使用しております。

    今回教えていただきたいのは、コメント欄のミステリーマンの変更方法についてです。
    このミステリーマンを各ユーザーごとに画像を指定したいのですが、
    どうやって変更すればいいかわかりません…。
    いろいろとネットを見てみると、「Gravatar」を利用すると簡単に変更できると
    書いてあるのですが、「Gravatar」等に登録してアイコンを変える以外で
    アイコンを指定することって出来ないのでしょうか?

    回答よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • kz

    (@kz)

    #未検証

    ユーザー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;
    }
    ?>

    トピック投稿者 sui0205

    (@sui0205)

    回答ありがとうございます!

    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をもう一つ追加すればいんでしょうか?

    kz

    (@kz)

    変数 $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

    トピック投稿者 sui0205

    (@sui0205)

    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」を反映しないようにするにはどうすればよいのでしょうか?

    kz

    (@kz)

    動作は検証済なので、以下を確認:
    ・テーマフォルダにある functions.php に追加している。
    <?php?> で囲まれてる中にそのまま追加していない。
     <?php?> で囲まれてる中に追加するなら、
      上記コードの <?php?> は除く。

    トピック投稿者 sui0205

    (@sui0205)

    ・テーマフォルダにある functions.php に追加している。
    ・<?phpと ?> で囲まれてる中にそのまま追加していない。
     <?phpと ?> で囲まれてる中に追加するなら、
      上記コードの <?phpと ?> は除く。

    以上のことを確認してみましたが、うまく表示することできませんでした。
    (私のやり方がおかしいのかもしれませんが…)
    いろいろ自分でも調べていたら、簡単にユーザーの画像を設定できる
    User Avatar」というプラグインを発見したので、そちらを利用することにしました。
    kzさん、本当にありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「コメント欄のミステリーマンを変更したい」には新たに返信することはできません。