检查用户是否具有Gravatar
感谢Rene Korss几乎帮助解决了这个问题, 并随时欢迎大家在讨论中进行回复。
我想检查发表评论的用户是否有化身?如果用户有头像(表示具有头像帐户), 则显示头像头像, 否则请显示我在else部分中定义的图像。任何帮助将被申请。
我目前正在使用此代码:
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;
}
是:
#1
试试这个。使用作者电子邮件会有所帮助。另外, 请注意, 我没有两次调用get_avatar。否则不需要, 因为如果化身不存在, 你可以设置要使用的$ default图像。
$avatar = get_avatar( $comment->comment_author_email, $size = '48', $default = bloginfo( 'template_directory' ).'/img/admin.jpg' ); if( $avatar !== false )
{
echo $avatar;
}
#2
另一种更通用的方法:当你不想从化石服务中获取默认图像时, 如果化身不存在, 而你只是想知道它可能在这种情况下提供你自己的本地图像或执行其他操作, 则可以使用Wordpress文档建议的功能。
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请求才能对其进行检查, 从而使所有操作变慢。
#3
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
}
#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
以上是 检查用户是否具有Gravatar 的全部内容, 来源链接: utcz.com/p/200208.html