【问题标题】:Check if a User Has a Gravatar [WordPress]检查用户是否有 Gravatar [WordPress]
【发布时间】:2015-09-24 07:07:00
【问题描述】:

感谢 Rene Korss 几乎帮助解决了问题,并且每次都在讨论中回复。

我想检查发表评论的用户是否有头像?如果用户有头像(意味着拥有 gravatar 帐户),则显示 gravatar 头像,否则显示我在其他部分定义的图像。任何帮助都将不胜感激。

我目前正在使用此代码:

if(get_avatar()==1 )
            {
                echo get_avatar($comment,$size='48',$default='<path_to_url>' ); 
            }
        else
            {   ?>
                <img src="<?php bloginfo('template_directory'); ?>/img/admin.jpg" alt=""><?php 
            }   ?>

此代码的输出只是其他部分工作。如果我将条件写为if(get_avatar()),那么只有部分工作。

$comment 具有值:

 stdClass Object ( 
 [comment_ID] => 9 
 [comment_post_ID] => 104 
 [comment_author] => Navnish 
 [comment_author_email] => ask@navnishbhardwaj.com
 [comment_author_url] => 
 [comment_author_IP] => 118.146.54.35 
 [comment_date] => 2015-09-23 14:33:11 
 [comment_date_gmt] => 2015-09-23 14:33:11 
 [comment_content] => this is comment by Admin
 [comment_karma] => 0 
 [comment_approved] => 1 
 [comment_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0 
 [comment_type] => 
 [comment_parent] => 0 
 [user_id] => 1 
 )

使用此代码时:

<?php 
$avatar = get_avatar( get_the_author_meta( 'ID' ), $size = '48', $default = bloginfo( 'template_directory' ).'/img/admin.jpg' ); 
if( $avatar !== false )
{
echo $avatar; 
} 
?>

得到这样的输出:

输出:

$avatar = get_avatar( $comment->comment_author_email, $size = '48', $default = bloginfo( 'template_directory' ).'/img/admin.jpg' ); 
if( $avatar !== false )
{
    echo $avatar; 
}

是:

【问题讨论】:

  • 告诉我们你是如何得到$comment的。
  • $comment 是 stdClass 对象。我已经更新了相关 $comment 的值

标签: php wordpress wordpress-theming


【解决方案1】:

另一种更通用的方法:当您不想从 gravatar 服务获取默认图像以防头像不存在,但您只想知道它可能在这种情况下提供您自己的本地图像或做点别的,就可以使用Wordpress documentation提出的功能了。

function validate_gravatar($email) {
    // Craft a potential url and test its headers
    $hash = md5(strtolower(trim($email)));
    $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
    $headers = @get_headers($uri);
    if (!preg_match("|200|", $headers[0])) {
        $has_valid_avatar = FALSE;
    } else {
        $has_valid_avatar = TRUE;
    }
    return $has_valid_avatar;
}

(您向 gravatar 服务请求指定“404”作为默认“图像”的图像,然后检查服务器的答案是什么)

这种方法的缺点是您必须为每个头像发出一些额外的 HTTP 请求来检查它,这样会稍微减慢一切。

【讨论】:

    【解决方案2】:
    if (get_avatar_data( $id_or_email )['found_avatar'])
    

    会检查用户是否有头像集。

    get_avatar_data

    【讨论】:

      【解决方案3】:

      试试这个。使用作者电子邮件应该会有所帮助。另外,请注意我没有两次调用get_avatar。不需要else,因为如果头像不存在,您可以设置使用$default 图像。

      $avatar = get_avatar( $comment->comment_author_email, $size = '48', $default = bloginfo( 'template_directory' ).'/img/admin.jpg' ); 
      if( $avatar !== false )
      {
          echo $avatar; 
      }
      

      【讨论】:

      • 出现错误。使用此代码的输出更新问题。请看一下。
      • 这不是错误。它看起来像头像的网址?但它不应该。 src 缺少什么图片?
      • 试过img src。但是,只有我定义的图像有效。 Gravatar 头像不工作。你可以说,它作为我们在 start 中使用的代码的 else 结果返回。
      • 好的。编辑了我的答案。请重试。
      • 我想我们几乎接近它了.. :) 看看我现在得到的结果。在问题末尾更新。
      【解决方案4】:
      if(get_avatar('user_id')==1 )
                  {
                      echo get_avatar($comment,$size='48',$default='<path_to_url>' ); 
                  }
              else
                  {   ?>
             <img src="<?php bloginfo('template_directory');>/img/admin.jpg" alt=""><?php 
                  }   ?>
      

      使用get_avatar( 'id') 而不是get_avatar( ) 使用一些id

      【讨论】:

      • 当我写 if(get_avatar()=1) 它不返回任何东西。在这种情况下,网站停止工作。仅完成白页
      • if(get_avatar('user_id')==1 ) 只有其他部分现在工作。
      • 试试这个 if(get_avatar('comment_approved')==1 )
      • 实现了这一点。但是,仍然只工作其他部分
      • if(get_avatar('comment_approved')==0 ) 试试这个
      【解决方案5】:

      get_avatar() 检索提供用户 ID 或电子邮件地址的用户的头像。如果头像存在则返回true。

      if(get_avatar($comment))
       {
         echo get_avatar($comment,$size='48',$default='<path_to_url>' ); 
       }
       else
       {   ?>
       <img src="<?php bloginfo('template_directory'); ?>/img/admin.jpg" alt=""><?php 
       }  
      

      【讨论】:

      • 仍然只有 IF 部分与 if(get_avatar() ) 工作相同
      • 你是如何获得 $comment 的
      • 使用函数作为参数。我已经更新了相关 $comment 的值。
      猜你喜欢
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 2013-11-17
      相关资源
      最近更新 更多