如何获取URL到帖子作者的用户BuddyPress头像内Wordpress后循环

时间:2016-01-01 19:09:16

标签: php wordpress buddypress gravatar

问题

如何获得帖子作者头像的URL?

要求

我想要网址上托管的图片的网址。

图片将在帖子的循环中调用。

该帖子的作者是我希望显示其头像图像的人。

我尝试过什么

一堆东西,但主要是<?php echo get_avatar_url('user_email'); ?>

它会返回由Gravatar托管的默认“神秘人”图片的网址,尽管他们是为此测试用户上传到我网站的头像。

澄清

我不想要一个Gravatar托管图片。

参考

Wordpress code reference for get_avatar_url()

目前尚未完成Wordpress Codex条目

关注

我开始考虑avatar和Gravatar之间的所有WP歧义,get_avatar_url仅适用于Gravatar图像,当然只有Gravatar注册用户可以使用。希望有人可以告诉我,我错了。

可能感兴趣

  • 网站使用Buddypress

  • 此网站Buddypress安装使用自定义头像尺寸

  • 本网站使用自己的自定义主题

  • 用户已将头像上传到网站

  • 用户没有gravatar帐户(测试没有大多数用户都没有gravatar帐户。我不希望大多数用户让神秘人代替他们的头像)

  • 以下代码可以很好地拉取网站托管的头像(但当然输出图片标签和类,而不是我需要的纯网址)

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

2 个答案:

答案 0 :(得分:6)

似乎没有关于此的文档,所以难怪它一直在挑战。

要检索BuddyPress头像网址,请使用如下功能:

// Assuming $user_id is the id for the desired user
echo bp_core_fetch_avatar ( 
    array(  'item_id' => $user_id, // id of user for desired avatar
            'type'    => 'full',
            'html'   => FALSE     // FALSE = return url, TRUE (default) = return img html
    ) 
);

以下是来自源php文件的文档(由我格式化):

文档

bp_core_fetch_avatar( $args );

返回字符串格式化的HTML <img>元素,或基于$ html arg的原始头像网址。

说明

获取BuddyPress对象的头像。 默认情况下支持用户,群组和博客的头像,但也可以 扩展到支持自定义组件。

此功能优先考虑本地上传的头像。当地的 找不到头像,Gravatar被查询。

用法

<?php  bp_core_fetch_avatar( $args ); ?>

默认用法:

<?php  $args = array(
    'item_id'       => false,
    'object'        => 'user',
    'type'          => 'thumb',
    'avatar_dir'    => false,
    'width'         => false,
    'height'        => false,
    'class'         => 'avatar',
    'css_id'        => false,
    'title'         => false,
    'alt'           => '',
    'email'         => false,
    'no_grav'       => false,
    'html'          => true,
    'extra_attr'    => '',
    'scheme'        => null,
    'rating'        => {setting for 'avatar rating' option},
    'force_default' => false
);

bp_core_fetch_avatar( $args ); ?>

参数:

所有论据在技术上都是可选的; bp_core_fetch_avatar()会自动检测某些内容(如果未提供)。在讨论具体论点时,下面将对此自动检测进行更详细的描述。

<强> ITEM_ID
(int | bool)您要为其申请头像的项目的数字ID(例如,用户ID)。如果没有&#39; item_id&#39;如果存在,该函数会尝试从&#39;对象中推断出一个ID。 +当前上下文:if&#39; object&#39;是用户&#39;并且当前页面是用户页面,&#39; item_id&#39;将默认为显示的用户ID;如果&#39; group&#39;在组页面上,到当前组ID; if&#39;博客&#39;,到当前博客的ID。如果没有&#39; item_id&#39;可以通过这种方式确定,该函数返回false。 默认值:false。

<强> $对象
(字符串)您获得头像的对象类型。 BuddyPress本身支持三种选择:&#39;用户&#39;,&#39; group&#39;,&#39; blog&#39 ;;插件可能会注册更多。 默认:&#39;用户&#39;

<强> $型
(字符串)当新的头像上传到BP时,&#39;拇指&#39;和#39;完整&#39;版本已保存。此参数指定您是否喜欢完整的&#39;或更小的拇指&#39;头像。 默认:&#39;拇指&#39;

<强> $ avatar_dir
(string | bool)(自动检测)应找到请求的头像的子目录的名称。如果没有传递任何值,&#39; avatar_dir&#39;是从&#39;对象&#39;用户&#39;推断出来的。变成了头像&#39;,&#39; group&#39;成为团队头像&#39;,#39;博客&#39;成为博客头像&#39;。

请记住,此字符串表示BP主要头像目录的子目录(通常基于{@link wp_upload_dir()});它是一个类似于&#39; group-avatars&#39;而不是完整的目录路径。通常,如果将头像存储在非默认位置,则仅需要覆盖默认值。 默认值:false。

<强> $宽度
(int | bool)(自动检测)请求的头像宽度。单位是px。该值用于构建宽度&#39; <img>元素的属性。如果未传递任何值,则BP会使用此头像类型的全局头像宽度。 默认值:false。

<强> $高度
(int | bool)(自动检测)请求的头像高度。单位是px。该值用于构建高度&#39; <img>元素的属性。如果未传递任何值,则BP会使用此头像类型的全局头像高度。 默认值:false。

<强> $类 (字符串)<img>元素的CSS类。请注意,BP使用了“头像”#39;在默认样式中相当广泛地使用类,因此如果您打算传递自定义值,请考虑将其附加到“头像”中。 (例如&#39; avatar foo&#39;)而不是完全替换它。 默认:&#39; avatar&#39;。

<强> $ css_id (string | bool)<img>元素的CSS id。 默认值:false。

<强> $标题 (字符串)<img>元素的title属性。 默认值:false。

<强> $ ALT (字符串)<img>元素的alt属性。在BP中,这个值通常由包装器函数传递,其中连接字符串所需的数据就在眼前;看到  {@link bp_get_activity_avatar()}是一个例子。 默认:&#39;&#39;。

$电子邮件
(字符串| bool)在Gravatar查询中使用的电子邮件。除非另行配置,否则BP使用Gravatar作为本地未提供的头像的后备。 Gravatar的API需要使用用户电子邮件地址的哈希值;这个论点提供了它。如果没有提供,该功能将推断它:对于用户,通过从数据库获取用户的电子邮件,对于组/博客,通过连接&#34; {$ item_id} - {$ object} @ {bp_get_root_domain( )}&#34 ;.用户查询会增加开销,因此建议包装函数为“电子邮件”提供一个值。查询用户ID时。 默认值:false。

<强> $ no_grav (bool)是否禁用默认的Gravatar后备。默认情况下,当BP无法找到本地头像时,它将回退到Gravatar。在某些情况下,这可能是不受欢迎的,在这种情况下,“no_grav&#39;应该设置为true。要全局停用Gravatar后备广告,请参阅&#39; bp_core_fetch_avatar_no_grav&#39;过滤。 默认值:false。

<强> $ HTML
(bool)是否将<img> HTML元素与原始URL一起返回到头像。如果为false,则会忽略<img>个特定参数(例如&#39; css_id&#39;)。 默认值:true。

<强> $ extra_attr (字符串)要在IMG元素中插入的HTML属性。没有消毒。 默认:&#39;&#39;。

<强> $方案
(字符串)要使用的URL方案。有关可接受的值,请参见set_url_scheme()。 默认为null。

<强> $等级 (字符串)显示Gravatars的评分。接受&#39; G&#39;&#39; PG&#39;,&#39; R&#39;&#39; X&#39;。 默认值是&#39; avatar_rating&#39;选项。

<强> $ force_default (bool)在创建Gravatar URL时使用。是否强制默认 无论Gravatar是否存在,都可以显示图像。 默认值:false。

说明:

要在本地停用Gravatar查询回退,请添加以下过滤器:

add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' );

答案 1 :(得分:0)

我不确定这个答案是否已纳入Cale的答案中,所以如果它对其他人有用,我会取消删除它。

循环中的

(比如single.php)

<img class="" src="<?php 
$authorUserID = get_the_author_meta('ID');  // get the user id of the post author
echo bp_core_fetch_avatar ( 
    array(  'item_id'   => $authorUserID,       // output user id of post author
            'type'      => 'full',
            'html'      => FALSE               // FALSE = return url, TRUE (default) = return url wrapped with html and css classes
    ) 
); 
?>">

或从主题文件夹

中的functions.php文件调用

调用(来自你的循环,比如single.php)

<?php custom_get_author_avatar_url(); ?>

函数(放在functions.php中)

function custom_get_author_avatar_url() {
    $authorUserID = get_the_author_meta('ID');  // get the user id of the post author
    echo bp_core_fetch_avatar ( 
    array(  'item_id'   => $authorUserID,       // output user id of post author
            'type'      => 'full',
            'html'      => FALSE            // FALSE = return url, TRUE (default) = return url wrapped with html and css classes
    ) 
    ); 
}