Obtenga la identificación de actividad de BuddyPress del avatar

2 minutos de lectura

avatar de usuario
Pedro

Cuando un usuario carga un nuevo avatar, el avatar se publica en el muro de actividades. ¿Cómo puedo obtener este ID de actividad usando el ID de usuario?

Creo que la única forma es crear una consulta propia, ¿verdad?

  • lo solucionaron verdad?

    – GeorgeWL

    29 de marzo de 2016 a las 15:16

avatar de usuario
dibujó010

Puede escribir una consulta para obtener esa actividad. También hay un filtro que puede conectar y que se llamará después de que se cargue el avatar (se explica más adelante):

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

El resultado se parece a:

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
)

Hay una acción que se llama a la que puede conectarse y que se llamará cuando se lleve a cabo esta actividad. Está xprofile_avatar_uploaded y pasa dos parámetros, $item_id (ID de usuario), y $type (por ejemplo, cultivo o cámara). Este filtro se ejecuta después de cargar un avatar.

En algún lugar de sus funciones, agregue:

add_action('xprofile_avatar_uploaded', 'callback');

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

Descubrí que también puedes llamar a:

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

para obtener el HTML para mostrar el avatar. se almacenan en wp-content/uploads/avatars.

También puede llamar:

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

para obtener solo la URL completa del avatar.

  • Gracias por su rápida respuesta. El filtro se llama cada vez (no solo una vez después de cargar el avatar). Mi idea es saber almacenar la identificación de la actividad en los campos user_meta después de que el avatar se cambie con éxito. ¿Puedes por favor darme el gancho correcto?

    – Pedro

    30 de marzo de 2016 a las 1:07

  • Hola, edité la respuesta, creo que la xprofile_avatar_uploaded la acción es más precisa. Por lo que puedo decir, solo se llama después de una carga exitosa de avatar.

    – dibujó010

    30 de marzo de 2016 a las 4:16

¿Ha sido útil esta solución?