2016-03-27 7 views
9

से BuddyPress गतिविधि आईडी प्राप्त करें जब कोई उपयोगकर्ता एक नया अवतार अपलोड करता है, अवतार गतिविधि दीवार में पोस्ट किया जाता है। उपयोगकर्ता आईडी का उपयोग करके मैं यह गतिविधि आईडी कैसे प्राप्त कर सकता हूं?अवतार

मुझे लगता है कि एकमात्र तरीका स्वयं की क्वेरी बनाना है, है ना?

+0

उन्होंने इसे सही हल किया? – GeorgeWL

उत्तर

6

आप उस गतिविधि को प्राप्त करने के लिए एक प्रश्न लिख सकते हैं। वहाँ भी एक फिल्टर के बाद अवतार अपलोड की गई है आप हुक कर सकते हैं जो में बुलाया जाएगा है (जो बाद में समझाया गया है):

<?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 (उपयोगकर्ता आईडी), और $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]); 

एचटीएमएल अवतार प्रदर्शित करने के लिए मिलता है। वे wp-content/uploads/avatars में संग्रहीत हैं।

तुम भी कॉल कर सकते हैं:

$url = bp_core_fetch_avatar(['item_id' => $user_id, 'html' => false]); 

अवतार का सिर्फ पूर्ण URL प्राप्त करने के लिए।

+0

तेजी से उत्तर के लिए धन्यवाद। फिल्टर हर बार कहा जाता है (अवतार अपलोड होने के बाद केवल एक बार नहीं)। मेरा विचार अवतार सफलतापूर्वक बदलने के बाद user_meta फ़ील्ड में गतिविधि आईडी को स्टोर करना है। क्या आप मुझे सही हुक दे सकते हैं? – Peter

+0

हाय, मैंने जवाब संपादित किया, मेरा मानना ​​है कि 'xprofile_avatar_uploaded' कार्रवाई अधिक सटीक है। जहां तक ​​मैं इसे बता सकता हूं केवल एक सफल अवतार अपलोड के बाद बुलाया जाता है। – drew010

संबंधित मुद्दे