我希望作者的照片出现在单曲的某些部分。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链接到作者帐户,并出现在管理面板上!
我怎样才能解决这个问题?
这个函数将简单地给你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
如果你明白我的意思,请告诉我。