我希望作者的图片出现在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!
我该如何解决这个问题?
答案 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
如果你得到我说的话,请告诉我。