2016-05-10 6 views
5

ユーザーが新しい画像(アバターではない)をアップロードしたときにカスタムuser_metaフィールドを更新したい。アバター用のコードをワーキング画像がアップロードされた後のフックプッシュフック

あなたがバディのためrtMediaプラグインを使用して写真をアップロードしている場合

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

buddypressで画像をアップロードする場所の詳細を共有できますか? – user5200704

+0

ノーマル画像のアップロードhttp://DOMAIN.COM/members/USERNAME/media/photo/ – Peter

+0

メディア/写真はbuddypressのデフォルトを提供していません。プラグインを使用しているプラ​​グイン名やリンクを教えてください。 – user5200704

答えて

4

をアップロードするには、あなたのカスタマイズを扱うことができる3つの引数を持つアクションrtmedia_after_add_mediaを提供しています。

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

以下の機能により、bp_core_avatar_handle_uploadが上書きされます。その中ではbp_core_avatar_handle_uploadを呼び出しますが、グローバル変数の値を設定してチェックすることで、無限ループを回避します。

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); 
関連する問題