首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从化身获取BuddyPress活动id

从化身获取BuddyPress活动id
EN

Stack Overflow用户
提问于 2016-03-27 03:22:35
回答 1查看 831关注 0票数 9

当用户上传一个新的化身时,阿凡达被张贴在活动墙中。如何使用userId获得这个活动ID?

我认为唯一的方法是创建一个自己的查询,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-29 04:52:48

您可以编写一个查询来获取该活动。还有一个过滤器,您可以挂接到它将被调用后,阿凡达上传(稍后解释):

代码语言:javascript
复制
<?php

global $wpdb;

$query = "SELECT * FROM {$wpdb->prefix}bp_activity WHERE " .
         "`type` = 'new_avatar' AND `user_id` = %d " .
         "ORDER BY `date_recorded` DESC LIMIT 1";

$result = 
$wpdb->get_row(
    $wpdb->prepare($query, $user_id)
);

if ($result) {
    // found an activity item for avatar upload
    var_dump($result);
} else {
    // user has not uploaded an avatar
}

结果如下:

代码语言:javascript
复制
stdClass Object
(
    [id] => 2   <-- this is the activity ID
    [user_id] => 1
    [component] => profile
    [type] => new_avatar
    [action] => admin changed their profile picture
    [content] => 
    [primary_link] => http://example.com/wordpress/members/admin/
    [item_id] => 0
    [secondary_item_id] => 0
    [date_recorded] => 2016-03-29 04:41:53
    [hide_sitewide] => 0
    [mptt_left] => 0
    [mptt_right] => 0
    [is_spam] => 0
)

当这个活动发生时,就会调用一个您可以挂钩的动作。它是xprofile_avatar_uploaded,它传递两个参数,$item_id (用户ID)和$type (例如裁剪或摄像机)。这个过滤器是在一个化身上传后执行的。

在您的功能中添加:

代码语言:javascript
复制
add_action('xprofile_avatar_uploaded', 'callback');

function callback($user_id, $type)
{
    // $user_id uploaded new avatar
}

我发现你也可以打电话:

代码语言:javascript
复制
$img = bp_get_activity_avatar(['user_id' => $user_id]);

让HTML显示化身。它们存储在wp-content/uploads/avatars中。

你也可以打电话:

代码语言:javascript
复制
$url = bp_core_fetch_avatar(['item_id' => $user_id, 'html' => false]);

才能得到头像的完整网址。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36243484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档