【问题标题】:How to get author's Gravatar url?如何获取作者的 Gravatar 网址?
【发布时间】:2014-06-13 08:55:49
【问题描述】:

我希望作者的图片出现在 single.php 页面的某些部分,我使用我在 wordpress 堆栈交换中某处找到的这段代码来获取作者 Gravatar 的 URL,以便将图片用作背景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>

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

我该如何解决这个问题?

【问题讨论】:

    标签: wordpress gravatar


    【解决方案1】:

    此功能只会为您提供 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 上工作。

    【讨论】:

      【解决方案2】:

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

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

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

      这里有一些例子

      对于 cmets:

      <?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 以从该电子邮件中返回图像。当您可以定位您的 div 时,我看不出将其作为 CSS 中 div 的背景的意义。您可以在一个 div 中调用 Gravatar,并在其上放置另一个包含文本的 div,或者通过将其用作 div 背景来执行任何操作。

      Gravatar 的工作方式是从服务器动态检索用户的图像。如果每个人的 gravatar 都通过引用 img url 来显示,那么它的编码会非常不同。 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

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

      【讨论】:

      • 我需要一种方法来获取头像U R L 而不是头像本身,所以我可以使用url作为某个DIV的背景图片的链接
      • 我更新了代码以显示另一种获取图像的方法。我了解您正在询问网址,但您正在使用网址来显示 gravatar。我发帖的方式少了一步。
      • 您并不总是希望它出现在 img 标签中。您可能希望将图像显示为背景图像以进行样式设置,在这种情况下您需要 URL。
      猜你喜欢
      • 2021-09-06
      • 2010-10-28
      • 2011-01-26
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      相关资源
      最近更新 更多