感谢 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;
}
?>
输出如下:
输出:
$avatar = get_avatar( $comment->comment_author_email, $size = '48', $default = bloginfo( 'template_directory' ).'/img/admin.jpg' );
if( $avatar !== false )
{
echo $avatar;
}
答案 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