web-dev-qa-db-ja.com

デフォルトのアバターリストをフィルタリングする

私はavatar_defaults filterフックを使ってデフォルトのアバターリストをフィルタリングしています。例えば:

function my_avatar_defaults( $avatar_defaults ) {
    $avatar_defaults['http://example.com/foo.png'] = __( 'Foo' );
    return $avatar_defaults;
}
add_filter( 'avatar_defaults', 'my_avatar_defaults' );

[設定]> [ディスカッション]に移動してから下にスクロールすると、Fooがデフォルトのアバターオプションとして追加されていることがわかります。例として、次のスクリーンショットを参照してください。

Default avatar list of options

問題はFooの隣に表示される画像のsrc属性です。 Gravatarに電話をかけているようです。これは私がFooの隣の画像用に手に入れたソースコードの例です:

<img src="http://0.gravatar.com/avatar/efaeb0e0be9922051a1c4ccce766a141?s=32&d=http%3A%2F%2Fexample.com%2Ffoo.png%3Fs%3D32&r=G&forcedefault=1" />

GravatarのURLではなくsrc属性が自分の画像のURLを指していることを確認する方法

3
henrywright

あなたはそれを正しくやっています。

Gravatar.comを呼び出すと、カスタムイメージの場所がWPでロードできるように渡されます。 src内のクエリ文字列を見てください、あなたはあなたの画像の場所を見るでしょう。そういうわけでそれは働きます。

0
butlerblog

2つのメモ:

  1. get_avatar() は「プラグイン可能」な関数です。つまり、get_avatar()という名前の新しい関数を保持するためのプラグインを作成することができます。これにより、WPで使用されている元の関数が上書きされます。
  2. get_avatar()にはフィルターもあります

    return apply_filters( 'get_avatar', $avatar, $id_or_email, $size, $default, $alt );
    

    戻り値を変更するために使用できます。

    add_filter( 'get_avatar', function( $html, $id, $size, $default, $alt )
    {
        // apply some changes here
        return $html;
    }, 10, 5 );
    

    つまり、の出力も変更して、src呼び出しを "Gravatar"に変更しないようにするだけです。

1
kaiser