Rufen Sie die BuddyPress-Aktivitäts-ID vom Avatar ab

Lesezeit: 2 Minuten

Benutzeravatar von Peter
Peter

Wenn ein Benutzer einen neuen Avatar hochlädt, wird der Avatar in der Aktivitätswand gepostet. Wie kann ich diese Aktivitäts-ID mithilfe der Benutzer-ID abrufen?

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

  • sie haben es richtig gelöst?

    – GeorgeWL

    29. März 2016 um 15:16 Uhr

Benutzeravatar von draw010
gezeichnet010

Sie können eine Abfrage schreiben, um diese Aktivität abzurufen. Es gibt auch einen Filter, in den Sie sich einklinken können, der aufgerufen wird, nachdem der Avatar hochgeladen wurde (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 sieht so aus:

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 gibt eine Aktion, die aufgerufen wird, in die Sie sich einklinken können, die aufgerufen wird, wenn diese Aktivität stattfindet. es ist xprofile_avatar_uploaded und es übergibt zwei Parameter, $item_id (Benutzer-ID) und $type (z. B. Crop oder Kamera). Dieser Filter wird ausgeführt, nachdem ein Avatar hochgeladen wurde.

Fügen Sie irgendwo in Ihren Funktionen Folgendes hinzu:

add_action('xprofile_avatar_uploaded', 'callback');

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

Ich habe gefunden, dass Sie auch anrufen können:

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

um den HTML-Code zum Anzeigen des Avatars zu erhalten. Sie werden darin gespeichert wp-content/uploads/avatars.

Sie können auch anrufen:

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

um nur die vollständige URL des Avatars zu erhalten.

  • Danke für die schnelle Antwort. Der Filter wird jedes Mal aufgerufen (nicht nur einmal, nachdem der Avatar hochgeladen wurde). 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?

    – Petrus

    30. März 2016 um 1:07 Uhr

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

    – draw010

    30. März 2016 um 4:16 Uhr

1390360cookie-checkRufen Sie die BuddyPress-Aktivitäts-ID vom Avatar ab

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy