检查用户是否有Gravatar [WordPress]

时间:2015-09-24 07:07:01

标签: php wordpress wordpress-theming

感谢 Rene Korss 帮助解决问题,并且每次都在那里回答讨论。

我想检查发布评论的用户是否有头像?如果用户具有化身(意味着具有gravatar帐户),则显示我在其他部分中定义的gravatar avatar else show image。任何帮助都会得到满足。

我目前正在使用此代码:

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

输出如下:

enter image description here

输出:

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

是: enter image description here

4 个答案:

答案 0 :(得分:4)

试试这个。使用作者电邮应该有所帮助另请注意,我没有两次致电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; 
}

答案 1 :(得分:1)

另一种更通用的方法:当您不想从虚拟形象服务中获取默认图像时,如果虚拟形象不存在,而您只是想知道它可以在这种情况下提供您自己的本地图像,或者做其他事情,那么您可以使用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 :(得分:0)

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 
 }  

答案 3 :(得分:0)

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