当用户上传一个新的化身时,阿凡达被张贴在活动墙中。如何使用userId获得这个活动ID?
我认为唯一的方法是创建一个自己的查询,对吗?
发布于 2016-03-29 04:52:48
您可以编写一个查询来获取该活动。还有一个过滤器,您可以挂接到它将被调用后,阿凡达上传(稍后解释):
<?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
}结果如下:
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 (例如裁剪或摄像机)。这个过滤器是在一个化身上传后执行的。
在您的功能中添加:
add_action('xprofile_avatar_uploaded', 'callback');
function callback($user_id, $type)
{
// $user_id uploaded new avatar
}我发现你也可以打电话:
$img = bp_get_activity_avatar(['user_id' => $user_id]);让HTML显示化身。它们存储在wp-content/uploads/avatars中。
你也可以打电话:
$url = bp_core_fetch_avatar(['item_id' => $user_id, 'html' => false]);才能得到头像的完整网址。
https://stackoverflow.com/questions/36243484
复制相似问题