检查用户是否有 Gravatar [WordPress]
Check if a User Has a Gravatar [WordPress]
感谢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;
}
是:
get_avatar()
检索提供了用户 ID 或电子邮件地址的用户的头像。如果头像存在,则 returns 为真。
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(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
试试这个。使用作者电子邮件应该会有所帮助。另外,请注意我没有调用 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;
}
另一种更通用的方法:当您不想从 gravatar 服务获取默认图像以防头像不存在,但您只想知道它是否可以提供您自己的本地图像case或者做点别的,那么就可以使用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”作为默认值的图像 "image",然后你检查服务器的答案是什么)
这种方法的缺点是您必须为每个化身发出一些额外的 HTTP 请求来检查它,这样会稍微减慢一切。
if (get_avatar_data( $id_or_email )['found_avatar'])
将检查用户是否设置了头像。
感谢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;
}
是:
get_avatar()
检索提供了用户 ID 或电子邮件地址的用户的头像。如果头像存在,则 returns 为真。
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(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
试试这个。使用作者电子邮件应该会有所帮助。另外,请注意我没有调用 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;
}
另一种更通用的方法:当您不想从 gravatar 服务获取默认图像以防头像不存在,但您只想知道它是否可以提供您自己的本地图像case或者做点别的,那么就可以使用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”作为默认值的图像 "image",然后你检查服务器的答案是什么)
这种方法的缺点是您必须为每个化身发出一些额外的 HTTP 请求来检查它,这样会稍微减慢一切。
if (get_avatar_data( $id_or_email )['found_avatar'])
将检查用户是否设置了头像。