我正在寻找一种解决方案,当用户没有任何头像时,不输出任何内容,而不是默认头像。
我目前正在使用这条线。我查看了函数,到目前为止,我唯一得到的是使用blank
作为默认的化身,但它仍然占用空间,我不希望这样。
echo get_avatar( get_the_author_meta( \'ID\' ), 70, \'blank\', __( \'avatar\', \'bla\' ) );
旁注:即使是那个空白的头像被从Gravatar中拉出来,我认为这是荒谬的。我正在寻找一种解决方案,当用户没有任何头像时,不输出任何内容,而不是默认头像。
我目前正在使用这条线。我查看了函数,到目前为止,我唯一得到的是使用blank
作为默认的化身,但它仍然占用空间,我不希望这样。
echo get_avatar( get_the_author_meta( \'ID\' ), 70, \'blank\', __( \'avatar\', \'bla\' ) );
旁注:即使是那个空白的头像被从Gravatar中拉出来,我认为这是荒谬的。您可以使用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.您可以使用函数检查用户是否设置了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\' ) );
}
Gravatar是一种远程服务。大多数实现这一点的方法都涉及到增强与远程服务的通信,由于网络请求,远程服务的性能会受到相当大的影响。
您必须以一种不会破坏页面生成性能的方式来实现这种通信。
在这里,提供默认图像的能力是合理的折衷。如果你想完全控制化身,你也可以使用你自己的本地化身系统。依赖第三方服务只是有其固有的局限性。
不太可能值得你花时间来实施这样的事情。您需要让gravatar为您提供与电子邮件关联的图像的URL,并检查它是否为空白图像(或IIRC您可以在URL中提供其他默认图像)。因此,在任何情况下,您都必须执行到gravatar服务器的往返操作,但如果您坚持不显示任何内容,那么您将从服务器而不是浏览器执行此操作,从而降低页面生成速度。
一种更简单的方法可能是用JS隐藏空白的。
您可以使用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\' ) );
}
如何获取任何人的gravatar图像?我需要向用户显示gravatar图像上的自定义配置文件页正在制作。到目前为止,我已经集成了Facebook个人资料图片(自动抓取)选项,并且允许用户分配自己的照片(根据自己的意愿)。我需要做的是,如果此人不是来自FB,那么可能应该使用他的电子邮件或其他东西来查看他/她是否有gravatar,如果是,则显示它。我该怎么做?谢谢