如果找不到任何本地图像,则使用Gravata作为备用图像

时间:2017-07-20 作者:Sid

我一直在尝试使用Gravator的Identicon作为后备映像,在预定义的映像文件夹中是否没有给定用户的映像。

考虑以下场景;

用户电子邮件:[email protected]

图像上载到wp-content/images/users/ 使用文件名0eb178cec364c022a189c3814e5f7483.jpg文件名是用生成的md5("[email protected]"."customkey");)

如果iImage文件可用为wp-content/images/users/0eb178cec364c022a189c3814e5f7483.jpg, 我需要将该图像显示为用户的头像。如果没有此类图像,将显示Gravatar。

到目前为止,我已经尝试使用Gravatar作为背景,但如果没有自定义图像,则会显示一个损坏的图像图标。

我正在寻找非插件解决方案,因为所有插件都使用默认的上传文件夹并创建许多缩略图,即使是出于这个目的,这也是完全不必要的。我找不到任何滴答作响的插件all 盒子。非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:kero 整理而成

您可以使用get_avatar_url 筛选器(请参阅传递的参数here in the source code) 要更改化身url,只需使用get_avatar() 用户电子邮件的主题与您习惯的一样。

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;
    }

结束

相关推荐

Images are not shown

我可以在媒体/图书馆中看到我的图片,但不能在帖子中看到。问题似乎是图像的真实url以图像结尾。jpg(如果我转到这个url,我可以看到图像)。但在帖子中,我看到了“断开的图像链接”图标。当我检查图像url时,它以图像sizeXsize结尾。jpg,所以Wordpress出于某种原因添加了sizeXsize(例如1000x1000)。如何解决此问题?编辑1:我刚刚安装了WP。我试过theams 2111和215,同样的问题。我已经安装了很多插件,请看一下。Edit2:我已经停用了所有插件,仍然是同一个问题。