繁体   English   中英

如何获取 URL 以在 Wordpress 帖子循环中发布作者的用户 BuddyPress 头像

[英]How To Get URL To Post Author's User BuddyPress Avatar Inside Wordpress Post Loop

问题

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

要求

我想要我网站上托管的图像的 url。

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

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

我试过的

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

它返回一个 url 到由 Gravatar 托管的默认“神秘人”图像,尽管他们是为这个测试用户上传到我的网站的化身。

澄清

我不想要 Gravatar 托管图像。

供参考

get_avatar_url() 的 Wordpress 代码参考

目前没有完整的 Wordpress Codex 条目

顾虑

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

可能感兴趣

  • 网站使用 Buddypress

  • 此网站 Buddypress 安装使用自定义头像大小

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

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

  • 用户没有 gravatar 帐户(没有进行测试,因为大多数用户不会有 gravatar 帐户。我不希望大多数用户用神秘人物代替他们的头像)

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

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

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

为了检索 BuddyPress 头像 URL,请使用如下函数:

// 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 的原始头像 URL。

描述:

获取 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)。 如果不存在“item_id”,该函数会尝试从“object”+当前上下文推断 ID:如果“object”是“user”并且当前页面是用户页面,“item_id”将默认为显示的用户身份; 如果是“组”并且在组页面上,则为当前组 ID; 如果为“博客”,则为当前博客的 ID。 如果无法通过这种方式确定“item_id”,则该函数返回 false。 默认值:假。

$对象
(字符串)您为其获取化身的对象类型。 BuddyPress 原生支持三个选项:'user', 'group', 'blog'; 一个插件可能会注册更多。 默认值:“用户”。

$类型
(字符串)当新头像上传到 BP 时,将保存“缩略图”和“完整”版本。 此参数指定您想要“完整”还是较小的“拇指”头像。 默认值:“拇指”。

$化身目录
(string|bool) (auto-detected) 应在其中找到所请求头像的子目录的名称。 如果未传递任何值,则从“object”推断出“avatar_dir”:“user”变为“avatars”,“group”变为“group-avatars”,“blog”变为“blog-avatars”。

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

$宽度
(int|bool)(自动检测)请求的头像宽度。 单位是像素。 该值用于为<img>元素构建“width”属性。 如果没有传递任何值,BP 将使用全局头像宽度作为该头像类型。 默认值:假。

$高度
(int|bool)(自动检测)请求的头像高度。 单位是像素。 此值用于构建<img>元素的“高度”属性。 如果没有传递任何值,BP 将使用全局头像高度作为该头像类型。 默认值:假。

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

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

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

$alt (字符串) <img>元素的 alt 属性。 在 BP 中,这个值通常由包装函数传递,其中连接字符串所需的数据就在手边; 有关示例,请参阅 {@link bp_get_activity_avatar()}。 默认: ''。

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

$no_grav (bool) 是否禁用默认的 Gravatar 回退。 默认情况下,BP 在找不到本地头像时会回退到 Gravatar。 在某些情况下,这可能是不可取的,在这种情况下,“no_grav”应该设置为 true。 要全局禁用 Gravatar 回退,请参阅“bp_core_fetch_avatar_no_grav”过滤器。 默认值:假。

$html
(bool) 是否返回一个<img> HTML 元素,相对于头像的原始 URL。 如果为 false, <img>特定参数(如“css_id”)将被忽略。 默认值:真。

$extra_attr (string) 要插入到 IMG 元素中的 HTML 属性。 没有消毒。 默认: ''。

$方案
(字符串)要使用的 URL 方案。 有关可接受的值,请参阅 set_url_scheme()。 默认为空。

$rating (string) 显示 Gravatars 的评级。 接受“G”、“PG”、“R”、“X”。 默认值是“avatar_rating”选项的值。

$force_default (bool) 在创建 Gravatar URL 时使用。 无论 Gravatar 是否存在,是否强制使用默认图像。 默认值:假。

笔记:

要在本地禁用 Gravatar 查询回退,请添加此过滤器:

add_filter( 'bp_core_fetch_avatar_no_grav', '__return_true' );

我不确定这个答案是否包含在 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
    ) 
    ); 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM