ユーザーが新しいアバターをアップロードすると、アバターがアクティビティ壁に表示されます。 userIdを使用してこのアクティビティIDを取得するにはどうすればよいですか?アバターからBuddyPressアクティビティIDを取得
私は唯一の方法は、独自のクエリを作成することだと思いますよね?
ユーザーが新しいアバターをアップロードすると、アバターがアクティビティ壁に表示されます。 userIdを使用してこのアクティビティIDを取得するにはどうすればよいですか?アバターからBuddyPressアクティビティIDを取得
私は唯一の方法は、独自のクエリを作成することだと思いますよね?
このアクティビティを取得するためのクエリを作成できます。 (後述)アバターがアップロードされた後、あなたはその中にフックすることができ、フィルタが呼び出されますもあります:あなたと呼ばれるアクションがあり
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
)
:よう
<?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
}
結果が見えますこのアクティビティが発生したときに呼び出されるフックを挿入できます。それはxprofile_avatar_uploaded
であり、$item_id
(ユーザーID)と$type
(例えば、クロップまたはカメラ)の2つのパラメーターを渡します。このフィルタは、アバターがアップロードされた後に実行されます。あなたの関数で
どこかには、追加:
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]);
を
アバターのちょうど完全なURLを取得します。
彼らはそれを正しく解決しましたか? – GeorgeWL