2016-03-27 20 views
9

Wenn ein Benutzer einen neuen Avatar hochlädt, wird der Avatar in der Aktivitätswand veröffentlicht. Wie kann ich diese Aktivitäts-ID mithilfe der userId abrufen?Erhalte die BuddyPress-Aktivitäts-ID vom Avatar

Ich denke, der einzige Weg ist, eine eigene Abfrage zu erstellen, oder?

+0

sie löste es richtig? – GeorgeWL

Antwort

6

Sie können eine Abfrage schreiben, um diese Aktivität zu erhalten. Es gibt auch einen Filter, den Sie in die genannte erhalten Haken kann nach der Avatar hochgeladen (wird später erklärt):

<?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 
} 

Ergebnis wie folgt aussieht:

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 
) 

Es eine Aktion ist das, was Sie genannt wird kann sich einhaken, das wird aufgerufen, wenn diese Aktivität stattfindet. Es ist xprofile_avatar_uploaded und es übergibt zwei Parameter, $item_id (Benutzer-ID) und $type (z. B. Zuschneiden oder Kamera). Dieser Filter wird ausgeführt, nachdem ein Avatar hochgeladen wurde.

Irgendwo in Ihren Funktionen hinzufügen:

add_action('xprofile_avatar_uploaded', 'callback'); 

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

Ich fand Sie können auch anrufen:

$img = bp_get_activity_avatar(['user_id' => $user_id]); 

den HTML-Code zu erhalten, um den Avatar angezeigt werden soll. Sie sind in wp-content/uploads/avatars gespeichert.

Sie können auch anrufen:

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

nur die vollständige URL des Avatars zu erhalten.

+0

Danke für die schnelle Antwort. Der Filter wird jedes Mal aufgerufen (nicht nur einmal nach dem Hochladen des Avatars). Meine Idee ist, die Aktivitäts-ID in den user_meta-Feldern zu speichern, nachdem der Avatar erfolgreich geändert wurde. Kannst du mir bitte den richtigen Haken geben? – Peter

+0

Hallo, ich habe die Antwort bearbeitet, ich glaube, die 'xprofile_avatar_uploaded' Aktion ist genauer. Soweit ich das beurteilen kann, wird es erst nach einem erfolgreichen Avatar-Upload aufgerufen. – drew010