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

Ich habe versucht, Gravator Identicon als Fallback-Bild zu verwenden, gibt es kein Bild für einen bestimmten Benutzer in einem vordefinierten Bildordner.

Betrachten Sie das folgende Szenario;

Benutzer-E-Mail: asd@asd.com

Ein Bild wird nach wp-content/images/users/ mit dem Dateinamen 0eb178cec364c022a189c3814e5f7483.jpg ( Der Dateiname wird mit md5("asd@asd.com"."customkey"); generiert md5("asd@asd.com"."customkey"); )

Wenn eine Bilddatei als wp-content/images/users/0eb178cec364c022a189c3814e5f7483.jpg , muss ich dieses Bild als Benutzer-Avatar wp-content/images/users/0eb178cec364c022a189c3814e5f7483.jpg . Wenn es kein solches Bild gibt, wird Gravatar angezeigt.

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

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

Solutions Collecting From Web of "Verwenden Sie Gravatar als Fallback-Image, wenn kein lokales Image gefunden wird"

Sie können den get_avatar_url Filter verwenden (siehe die hier im Quellcode übergebenen Argumente), 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; }