Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save champsupertramp/a7ce812c702865cb973445c9fe7a9544 to your computer and use it in GitHub Desktop.
Save champsupertramp/a7ce812c702865cb973445c9fe7a9544 to your computer and use it in GitHub Desktop.
Ultimate Member 2.0 - Add Profile Photo in Register Form
/**
* Add new predefined field "Profile Photo" in UM Form Builder.
*/
add_filter("um_predefined_fields_hook","um_predefined_fields_hook_profile_photo", 99999, 1 );
function um_predefined_fields_hook_profile_photo( $arr ){
$arr['profile_photo'] = array(
'title' => __('Profile Photo','ultimate-member'),
'metakey' => 'profile_photo',
'type' => 'image',
'label' => __('Change your profile photo','ultimate-member'),
'upload_text' => __('Upload your photo here','ultimate-member'),
'icon' => 'um-faicon-camera',
'crop' => 1,
'max_size' => ( UM()->options()->get('profile_photo_max_size') ) ? UM()->options()->get('profile_photo_max_size') : 999999999,
'min_width' => str_replace('px','',UM()->options()->get('profile_photosize')),
'min_height' => str_replace('px','',UM()->options()->get('profile_photosize')),
);
return $arr;
}
/**
* Multiply Profile Photo with different sizes
*/
add_action( 'um_registration_set_extra_data', 'um_registration_set_profile_photo', 9999, 2 );
function um_registration_set_profile_photo( $user_id, $args ){
if ( empty( $args['custom_fields'] ) ) return;
if( ! isset( $args['form_id'] ) ) return;
if( ! isset( $args['profile_photo'] ) || empty( $args['profile_photo'] ) ) return;
// apply this to specific form
//if( $args['form_id'] != 12345 ) return;
$files = array();
$fields = unserialize( $args['custom_fields'] );
$user_basedir = UM()->uploader()->get_upload_user_base_dir( $user_id, true );
$profile_photo = get_user_meta( $user_id, 'profile_photo', true );
$image_path = $user_basedir . DIRECTORY_SEPARATOR . $profile_photo;
$image = wp_get_image_editor( $image_path );
$file_info = wp_check_filetype_and_ext( $image_path, $profile_photo );
$ext = $file_info['ext'];
$new_image_name = str_replace( $profile_photo, "profile_photo.".$ext, $image_path );
$sizes = UM()->options()->get( 'photo_thumb_sizes' );
$quality = UM()->options()->get( 'image_compression' );
if ( ! is_wp_error( $image ) ) {
$max_w = UM()->options()->get('image_max_width');
if ( $src_w > $max_w ) {
$image->resize( $max_w, $src_h );
}
$image->save( $new_image_name );
$image->set_quality( $quality );
$sizes_array = array();
foreach( $sizes as $size ){
$sizes_array[ ] = array ('width' => $size );
}
$image->multi_resize( $sizes_array );
delete_user_meta( $user_id, 'synced_profile_photo' );
update_user_meta( $user_id, 'profile_photo', "profile_photo.{$ext}" );
@unlink( $image_path );
}
}
@s2353553
Copy link

s2353553 commented Oct 9, 2023

Hi,
Everything is almost working perfectly BUT..

On the account page when I upload, crop and then apply. When the lightbox/image upload disappears and the account page refreshes, the newly uploaded image shows very briefly (maybe for half a second) above the Upload button and then is quickly replaced by the old profile photo.
When entering password and clicking save everything works fine.

To clarify the problem is, after clicking Apply the newly uploaded image only shows briefly and is replaced by the old image (above the upload button).

Desperate for some help with this, am happy to pay!

@champsupertramp
Copy link
Author

Hi @s2353553 Does your site have any caching plugin? If so, please try disabling it and see if this is causing the issue.

@s2353553
Copy link

Hi, thanks for your reply.. it turned out to be the require password setting in admin was stopping the image from being saved when the user clicks apply and the lightbox closes

@Shubh9540
Copy link

hello @champsupertramp it show in registration form
pr

but not shown in member direcories frontend no what to do??
Uploading Screenshot 2024-06-06 150944.png…

@Shubh9540
Copy link

Screenshot 2024-06-06 150944

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment