web-dev-qa-db-ja.com

匿名のコメントに対して生成されたアバターを異なるものにするにはどうすればいいですか?

私のウェブサイト上のすべてのコメントは匿名で登録なしです。コメントを投稿するには、フィールド名(必須ではありません)とコメントのテキスト(必須である)を入力する必要があります。

アバターに問題があります。それらはすべて同じように生成されます。

それらを違うものにするにはどうすればいいですか。

4
mvod

デフォルトのアバターをカスタマイズする方法は2つあります。

  1. 新しいデフォルトのアバターを設定/ディスカッションに追加します。
  2. get_avatar()の出力を変更してください。

最初の選択肢から始めましょう。これは少し速くなります。

新しいデフォルトアバターを設定/ディスカッションに追加します

フィルタ'avatar_defaults'があります。ここにもっとアバターを追加することができます。
キーがURLで値が表示名のデフォルトイメージの配列を取得します。

サンプルコード

add_filter( 'avatar_defaults', 'wpse_58373_kitten_avatar' );

/**
 * Add a new default avatar.
 *
 * @param  array $avatar_defaults Key = URL, Value = Visible name.
 * @return array
 */
function wpse_58373_kitten_avatar( $avatar_defaults )
{
    $avatar_defaults['http://placekitten.com/32/32'] = 'Kitty';

    return $avatar_defaults;
}

結果

enter image description here

get_avatar()の出力を変更してください。

get_avatar()は最初に'avatar_default'という名前のオプションを検索します。 'pre_option_avatar_default'にフックしてカスタム(ランダム)URLを返すことができます。

サンプルコード

add_filter( 'pre_option_avatar_default', 'wpse_58373_custom_default_avatar');

/**
 * Return a random image URL
 */
function wpse_58373_custom_default_avatar()
{
    /* We use images from WP here, you should change this and put some default
     * images into your theme or plugin directory.
     */
    $base_url = admin_url( 'images' ) . '/';
    $images   = array ( 'wp-logo-vs.png', 'wpspin_dark.gif', 'yes.png' );
    $Rand     = Rand( 0, ( count( $images ) - 1 ) );

    return $base_url . $images[ $Rand ];
}

結果

enter image description here

ご覧のとおり、テーマのアバターサイズと一致するサイズの画像を返す必要があります。 :)

6
fuxia

ランダムなアバター生成に関しては、これは非常に有益な答えであり、1つのマイナーな変更で御馳走を働かせた - 問題の機能は通過するために議論を必要とした。引数がないと、返されるコードには、画像の目的のURLと、gravitarのデフォルトアイコンのURLの両方を含むhtmlの寄せ集めが含まれていました。私はこれからそれを変更しました:

wpse_58373_custom_default_avatar()

これに:

wpse_58373_custom_default_avatar($value)

そしてそれはごちゃごちゃせずに画像のURLを生成するようだ。使いやすさのために、管理フォルダーではなくテーマをターゲットにするためのget_template_directory_uri()を追加した最後のコードと、変数を隠したいくつかのコードがあります。

// Random Avatar

add_filter( 'pre_option_avatar_default', 'mind_bullets_default_avatar' );

function mind_bullets_default_avatar ( $value ) {

  $tix_array = array ( 'Amer_Cyborg.jpg', 'Die_hard_3.jpg', 'Thing.jpg' );

// Include randomizer in url generator
    return get_template_directory_uri().'/images/Avatars/'.$tix_array [Rand( 0, ( count( $tix_array ) - 1 ) )]; 

}

ユーザーがすぐに自分のものを選択できるようにしたいですが、ただコメントしたい人のために、それはサイトの外観を一貫した状態に保ちます。

1
Stigwood