提问者:小点点

如何获得作者的Gravatar网址?


我希望作者的照片出现在单曲的某些部分。php页面,我使用我在wordpress堆栈交换中找到的代码获取作者Gravatar的URL,以便将pic用作DIV的背景图像:

这段代码包含多个函数。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]; };

这是单曲。php:

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

它的奇怪之处在于,它返回默认的“神秘人”头像,而不是作者的Gravatar,尽管Gravatar链接到作者帐户,并出现在管理面板上!

我怎样才能解决这个问题?


共2个答案

匿名用户

这个函数将简单地给你GRAVATAR网址!

感谢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() ?>

注意:它必须在循环内使用。在WordPress4.2上为那些使用get_avatar_url方法有问题的人工作。

匿名用户

Wordpress内置了获取阿凡达的功能。你要做的是通过一个自定义函数获取头像,并使用wordpress通过get_avatar函数获取头像。你可以在这里了解更多

您可以从single.php页面调用它,并在没有函数的情况下从相同的代码中调整它的大小。

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

这里有一些例子

供评论:

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

对于帖子的作者,在循环中:

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

对于随机电子邮件地址:

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

根据评论更新:

这两种方法中的任何一种都能解决你的问题。为什么您要尝试检索gravatar的url,以便在您可以只显示gravatar时使用该url来显示gravatar?Gravatar通过安全性动态地执行此操作,而您执行此操作的方式是获取作者的电子邮件并调用Gravatar从该电子邮件返回图像。我看不出在css中把它作为一个div的背景有什么意义,因为你可以只定位你的div。您可以在一个div中调用Gravatar,并将另一个包含文本的div放置在其上,或者将其用作div背景进行任何操作。

Gravatar的工作方式是从服务器动态检索用户的图像。如果每个人的gravatar都是通过引用img url来显示的,那么它的编码就会非常不同。Wordpress有一篇文章叫做Using Gravatar,对此有很好的解释。

如果这种方式对您更有意义,您可以将其放入插件或函数中。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

如果你明白我的意思,请告诉我。