如何不输出任何内容,而不是输出默认的头像?

时间:2017-09-29 作者:NextGenThemes

我正在寻找一种解决方案,当用户没有任何头像时,不输出任何内容,而不是默认头像。

我目前正在使用这条线。我查看了函数,到目前为止,我唯一得到的是使用blank 作为默认的化身,但它仍然占用空间,我不希望这样。

echo get_avatar( get_the_author_meta( \'ID\' ), 70, \'blank\', __( \'avatar\', \'bla\' ) );
旁注:即使是那个空白的头像被从Gravatar中拉出来,我认为这是荒谬的。

5 个回复
SO网友:Boris Kuzmanov

您可以使用get_avatar 过滤器以更改输出或avatar_defaults 添加可放置在服务器上的新映像。

下面是添加新头像的示例代码,您可以从“设置”>“讨论”页面将其设置为默认值。

add_filter( \'avatar_defaults\', \'add_new_gravatar_image\' );
function add_new_gravatar_image($avatar_defaults) {
    $myavatar = \'http://yoursite.com/image.png\';
    $avatar_defaults[$myavatar] = "Default Gravatar";

    return $avatar_defaults;
}
如果要更改输出,可以在documentation page for get_avatar.

SO网友:Milan Petrovic

您可以使用函数检查用户是否设置了Gravatar:

function wps_281473_has_gravatar($email) {
    $hash = md5(strtolower(trim($email)));

    $url = \'http://www.gravatar.com/avatar/\'.$hash.\'?d=404\';
    $headers = get_headers($url);

    return preg_match("/200/", $headers[0]) == 1;
}
因此,您的代码是:

if (wps_281473_has_gravatar(get_the_author_meta(\'email\'))) {
    echo get_avatar( get_the_author_meta( \'ID\' ), 70, \'blank\', __( \'avatar\', \'bla\' ) );
}

SO网友:Rarst

Gravatar是一种远程服务。大多数实现这一点的方法都涉及到增强与远程服务的通信,由于网络请求,远程服务的性能会受到相当大的影响。

您必须以一种不会破坏页面生成性能的方式来实现这种通信。

在这里,提供默认图像的能力是合理的折衷。如果你想完全控制化身,你也可以使用你自己的本地化身系统。依赖第三方服务只是有其固有的局限性。

SO网友:Mark Kaplun

不太可能值得你花时间来实施这样的事情。您需要让gravatar为您提供与电子邮件关联的图像的URL,并检查它是否为空白图像(或IIRC您可以在URL中提供其他默认图像)。因此,在任何情况下,您都必须执行到gravatar服务器的往返操作,但如果您坚持不显示任何内容,那么您将从服务器而不是浏览器执行此操作,从而降低页面生成速度。

一种更简单的方法可能是用JS隐藏空白的。

SO网友:Dev

您可以使用WordPress核心get_avatar_url 作用

if ( get_avatar_url( get_the_author_meta( \'ID\',get_current_user_id() ) ) {
    echo get_avatar( get_the_author_meta( \'ID\' ), 70, \'blank\', __( \'avatar\', \'bla\' ) );
}

结束

相关推荐

Fetching Gravatar

如何获取任何人的gravatar图像?我需要向用户显示gravatar图像上的自定义配置文件页正在制作。到目前为止,我已经集成了Facebook个人资料图片(自动抓取)选项,并且允许用户分配自己的照片(根据自己的意愿)。我需要做的是,如果此人不是来自FB,那么可能应该使用他的电子邮件或其他东西来查看他/她是否有gravatar,如果是,则显示它。我该怎么做?谢谢