如何检查用户的Gravata是否是默认的?

时间:2019-09-30 作者:Pipo

我正在寻找一种方法来检查用户是否有默认的gravatar。

如果我使用简单的get_avatar( current_user_id() ) === false 因为默认的gravatar仍然是一个化身,所以它永远不会回来false;get_avatar_data( get_current_user_id() )[\'found_avatar\'] 当它返回时1 即使使用默认gravatar

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

我查看了WP提供的与化身相关的功能/过滤器,我认为没有直接的方法来判断化身是真实的还是默认的图像,因为您只有url可以使用。

但是,我也看了《Gravatar实施指南》,https://en.gravatar.com/site/implement/images/, 注意,您可以将默认图像设置为在未找到化身时返回404响应。

基于这些信息,我想出了这个代码示例,

add_filter( \'get_avatar\', function( $avatar, $id_or_email, $size, $default, $alt, $args ) {
  if ( is_admin() ) {
    return $avatar;
  }
  // Set default response to 404, if no gravatar is found
  $avatar_url = str_replace( \'d=\' . $args[\'default\'], \'d=404\', $args[\'url\'] );
  // Request the image url
  $response = wp_remote_get( $avatar_url );
  // If there\'s no avatar, the default will be used, which results in 404 response
  if ( 404 === wp_remote_retrieve_response_code( $response ) ) {
    // Do something
  }
  // Return img html
  return $avatar;
}, 10, 6 );
这可能需要一些微调,但在这种形式下,它可以完成工作。我不知道这会不会对网站性能产生一些负面影响。特别是如果有大量的头像URL需要在页面加载时进行检查(但可能状态检查结果可以保存到用户/评论元,从$ID\\u或电子邮件中获取ID,以提高性能,嗯…?)

你也可以检查一下get_avatar_data() 我想是过滤器。

相关推荐

Custom Gravatar not working

我正在尝试将一个自定义Gravatar上传到Wordpress,但是有些东西破坏了图像链接,我不知道如何修复它。add_filter( \'avatar_defaults\', \'new_default_avatar\' ); function new_default_avatar ( $avatar_defaults ) { //Set the URL where the image file for your avatar is located $n