programing

아바타에서 BuddyPress 활동 ID 가져오기

telecom 2023. 3. 1. 09:32
반응형

아바타에서 BuddyPress 활동 ID 가져오기

사용자가 새로운 아바타를 업로드하면 해당 아바타가 액티비티 월에 게시됩니다.userId를 사용하여 이 액티비티 ID를 취득하려면 어떻게 해야 합니까?

내 생각에 유일한 방법은 직접 쿼리를 만드는 것 같아, 맞지?

해당 액티비티를 취득하기 위한 쿼리를 작성할 수 있습니다.아바타가 업로드된 후에 호출되는 필터도 있습니다(나중에 설명).

<?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]);

아바타의 완전한 URL을 얻을 수 있습니다.

언급URL : https://stackoverflow.com/questions/36243484/get-the-buddypress-activity-id-from-the-avatar

반응형