如何获得作者的Gravatar url?

时间:2014-04-27 23:50:44

标签: wordpress gravatar

我希望作者的图片出现在single.php页面的某些部分,我使用了这个代码,我在wordpress堆栈交换中的某处找到了作者Gravatar的URL以便使用pic作为DIV的背景图片:

这个代码在functions.php中:

if ( function_exists('register_sidebar') )
    register_sidebar();
add_theme_support( 'post-thumbnails' );
add_image_size( 'related', 300 , 200 , array(bottom, right) ); 
function get_avatar_url($get_avatar){
    preg_match("/src='(.*?)'/i", $get_avatar, $matches);
    return $matches[1]; };

这在single.php中:

<div style="background:url('<?php echo get_avatar_url(get_avatar( $curauth->ID, 150 )); ?>');"> </div>

它的奇怪之处在于它返回了默认的神秘人物#34;虽然Gravatar链接到作者帐户并且它出现在管理面板上,但是阿凡达而不是作者的Gravatar!

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

此功能只会为您提供GRAVATAR URL!

感谢Musik8101,我根据您的代码提出了我的自定义解决方案。

这是它,并且它运作良好:

 function my_gravatar_url() { // Get user email
$user_email = get_the_author_meta( 'user_email' );
// Convert email into md5 hash and set image size to 80 px
$user_gravatar_url = 'http://www.gravatar.com/avatar/' . md5($user_email) . '?s=80';
echo $user_gravatar_url; } 
模板中的

只需使用:

<?php my_gravatar_url() ?>

注意:它必须在循环中使用。 适用于那些遇到get_avatar_url方法问题的人。适用于Wordpress 4.2。

答案 1 :(得分:0)

Wordpress内置了get_avatar函数。你正在做的是通过自定义函数获取头像并使用wordpress通过get_avatar函数获取它。您可以阅读更多相关信息here

你可以从single.php页面直接调用它,并在没有你的功能的情况下从相同的代码中调整它。

<?php echo get_avatar( $id_or_email, $size, $default, $alt ); ?> 

以下是一些例子

征求意见:

<?php echo get_avatar( $comment, 32 ); ?>

对于帖子的作者,在The Loop中:

<?php echo get_avatar( get_the_author_meta( 'ID' ), 32 ); ?>

对于随机电子邮件地址:

<?php echo get_avatar( 'email@example.com', 32 ); ?>

评论更新:

这两种方法中的任何一种都可以解决您的问题。你为什么要尝试检索一个gravatar的url,以便你可以使用该url显示gravatar,只需显示gravatar? Gravatar通过安全性动态执行此操作,并且您执行此操作的方式是通过向作者发送电子邮件并致电gravatar以从该电子邮件返回图像。当你可以定位你的div时,我没有看到让它成为css div的背景。您可以在一个div中调用Gravatar,并在其上放置另一个包含文本的div或者您可以将其用作div背景的任何内容。

Gravatar的工作方式是从服务器动态检索用户的图像。如果通过引用img url显示每个人的gravatar,它将被编码得非常不同。 Wordpress有一篇名为Using Gravatars的文章,对它有很好的解释。

如果你对这种方式更有意义,你可以将它放在插件或你的functions.php中,但它最终是同样的事情。你想调用那个Gravatar并保护它,然后简单地将它放在一个div中并设置它。这是我知道如何解释它的唯一方法。

 function my_display_gravatar() { 
    global $author;
    get_the_author_meta();
    // Get User Email Address
    $getuseremail = $author->user_email;
    // Convert email into md5 hash and set image size to 200 px
    $usergravatar = 'http://www.gravatar.com/avatar/' . md5($getuseremail) . '?s=200';
    echo '<img src="' . $usergravatar . '" class="wpb_gravatar" />';
} 

然后用

调用该函数
<div id="gravatar">
<?php echo my_display_gravatar(); ?>
</div>

如果您在服务ssl,请记得使用https://secure.gravatar.com

如果你得到我说的话,请告诉我。