it-swarm.com.de

Verwenden Sie Gravatar als Fallback-Image, wenn kein lokales Image gefunden wird

Ich habe versucht, Gravator's Identicon als Fallback-Image zu verwenden. Befindet sich für einen bestimmten Benutzer kein Image in einem vordefinierten Image-Ordner.

betrachten Sie das folgende Szenario.

Benutzer-E-Mail: [email protected]

ein Bild wird mit dem Dateinamen wp-content/images/users/ in 0eb178cec364c022a189c3814e5f7483.jpg hochgeladen (Der Dateiname wird mitmd5("[email protected]"."customkey"); generiert)

Wenn eine Bilddatei als wp-content/images/users/0eb178cec364c022a189c3814e5f7483.jpg verfügbar ist, muss ich dieses Bild als Avatar des Benutzers anzeigen. Wenn es kein solches Bild gibt, wird Gravatar angezeigt.

Bisher habe ich versucht, den Gravatar als Hintergrund zu verwenden, aber es wird ein fehlerhaftes Bildsymbol angezeigt, wenn kein benutzerdefiniertes Bild verfügbar ist.

Ich suche nach einer Lösung ohne Plug-In, da alle Plug-Ins den Standard-Upload-Ordner verwenden und auch für diesen Zweck viele Miniaturansichten erstellen, was völlig unnötig ist. Ich konnte keine Plugins finden, die alle die Kästchen ankreuzen. Jede Hilfe wird geschätzt.

1
Sid

Sie können den get_avatar_url-Filter (siehe die übergebenen Argumente hier im Quellcode ) verwenden, um die Avatar-URL zu ändern, und dann einfach get_avatar() mit der Benutzer-E-Mail im Thema verwenden, wie Sie es gewohnt sind.

add_filter('get_avatar_url', 'wpse_avatar_or_gravatar', 10, 3);
function wpse_avatar_or_gravatar($url, $id_or_email, $args) {
    // was id passed via $id_or_email
    if ($id_or_email == intval($id_or_email)) {
        $userdata = get_userdata($id_or_email);
        $email = $userdata->user_email;
    }
    // was email passed via $id_or_email
    else {
        $email = $id_or_email;
    }

    $path = sprintf('%s/images/users/%s.jpg',
                WP_CONTENT_DIR,
                md5($email . "customkey")
            );

        // image exists, return url
        if (file_exists($path)) {
                $url = sprintf('%s/images/users/%s.jpg',
                    WP_CONTENT_URL,
                    md5($email . "customkey")
                );
        }
        else {
                $url = "https://0.gravatar.com/avatar/" . md5($email . 'customkey') . "?s=64&d=identicon&f=y&r=g";
        }
        // image does not exist, return default avatar
        return $url;
    }
2
kero