2016-05-10 9 views
5

Ich möchte ein benutzerdefiniertes Feld user_meta aktualisieren, wenn ein Benutzer ein neues Bild hochgeladen hat (kein Avatar).Buddypress-Hook, nachdem das Bild hochgeladen wurde

Arbeits Code für Avatar hochladen

add_action('xprofile_avatar_uploaded', 'callback'); 

function callback($user_id, $type) 
{ 
    // $activity_id = <- the activity from the uploded image. 

    update_user_meta($user_id, 'image_'.$activity_id, '1'); 
} 
+0

Können Sie Details darüber teilen, wo Bild in Buddypress hochgeladen werden soll? – user5200704

+0

das normale Bild hochladen http://DOMAIN.COM/members/USERNAME/media/photo/ – Peter

+0

Medien/Foto ist nicht zur Verfügung stellen buddypress default Was ist externes Plugin von buddypress, wenn ja, geben Sie mir Plugin-Namen oder Link, die Plugin verwenden. – user5200704

Antwort

4

Wenn Sie rtMedia Plugin für Buddypress verwenden und Hochladen von Fotos bieten eine Aktion rtmedia_after_add_media mit drei Argumenten Sie Ihre Anpassungen umgehen kann.

add_action('rtmedia_after_add_media', 'rtmedia_after_add_media_update_usermeta', 10, 3); 

function rtmedia_after_add_media_update_usermeta($media_ids, $file_object, $uploaded){ 
    // its not provide user id arg so you can get current user id using function get_current_user_id() or $uploaded array have key media_author; 
    // $media_ids give all attahment ids when you upload file 
    // $file_object give infomation about file like name, path etc 
    // $uploaded current upload give settings and update information. Its also gives authore id who is upload media. 
    // $user_id = $uploaded['media_author']; 
    $user_id = $uploaded['media_author']; 

} 
3

I overrode bp_core_avatar_handle_upload mit der folgenden Funktion. Er ruft bp_core_avatar_handle_upload in ihm auf, vermeidet jedoch eine Endlosschleife, indem er den Wert einer globalen Variablen einstellt und überprüft.

global $my_bp_group_avatar_upload; 
    function my_bp_group_avatar_upload($upload, $file, $upload_dir_filter) 
    { 
    // Global. 
    global $my_bp_group_avatar_upload; 

    // Check upload filter. 
    if ($upload_dir_filter != ‘groups_avatar_upload_dir’) 
    return; 

    // Check if this is the second call. 
    if ($my_bp_group_avatar_upload !== 2) 
    { 
    // We are being called for the first time! 

    // We are about to call the second time. 
    $my_bp_group_avatar_upload = 2; 

    // Call the function. 
    // We’re calling ourselves too, but this time the global equals 2, so we are now in the else statement. 
    if (bp_core_avatar_handle_upload($file, $upload_dir_filter)) { 
    // Do stuff here, the upload was a success. 
    } 

    // We’ve executed the function. We can bail out of the original function run. 
    return FALSE; 
    } else { 
    // We have been called a second time, so set this to something other than 2. 
    $my_bp_group_avatar_upload = 0; 

    // We want to continue with the execution. 
    return TRUE; 
    } 
    } 
    add_filter(‘bp_core_pre_avatar_handle_upload’, ‘my_bp_group_avatar_upload’, 10, 3); 
Verwandte Themen