it-swarm.com.de

Filtern der Standard-Avatar-Liste

Ich verwende den avatar_defaults-Filter-Hook, um die Standard-Avatar-Liste zu filtern. Zum Beispiel:

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

Dies funktioniert, da ich sehe, dass Foo als Standard-Avatar-Option hinzugefügt wurde, wenn ich Einstellungen> Diskussion öffne und dann nach unten scrolle. Im folgenden Screenshot sehen Sie ein Beispiel:

Default avatar list of options

Das Problem ist das Attribut src des Bildes, das neben Foo angezeigt wird. Es scheint ein Anruf nach Gravatar zu sein. Hier ist ein Beispiel für den Quellcode, den ich für das Bild neben Foo erhalte:

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

Wie kann ich sicherstellen, dass das Attribut src auf meine Bild-URL anstatt auf die Gravatar-URL verweist (in der die URL meines Bildes zu sein scheint)?

3
henrywright

Du machst es richtig.

Beim Aufruf von gravatar.com wird der Speicherort Ihres benutzerdefinierten Bildes übergeben, damit WP es laden kann. Werfen Sie einen Blick auf die Abfragezeichenfolge im Quelltext, Sie werden Ihren Bildspeicherort sehen. So funktioniert das.

0
butlerblog

Zwei Notizen:

  1. get_avatar() ist eine "steckbare" Funktion. Das bedeutet, dass Sie ein Plugin schreiben können, das eine neue Funktion mit dem Namen get_avatar() enthält, die dann die von WP verwendete ursprüngliche Funktion überschreibt.
  2. get_avatar() hat auch einen Filter

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

    damit können Sie den Rückgabewert ändern:

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

    und das bedeutet, dass Sie einfach auch die Ausgabe ändern und den Aufruf src für "Gravatar" entfernen können, damit dies nicht passiert.

1
kaiser