add_action( 'user_edit_form_tag','make_uploadable_form'); function make_uploadable_form() { echo ' enctype="multipart/form-data"'; } add_action( 'show_user_profile', 'UploadField' ); add_action( 'edit_user_profile', 'UploadField' ); function UploadField( $user ) { if ( ! current_user_can( 'edit_user' ) ) return false; $pid = get_user_meta( $user->ID, 'profile_photo', true ); $img = wp_get_attachment_image( $pid ); if ( ! empty( $img ) ) echo( $img ); ?>

Extra profile information

false $upload_overrides = array( 'test_form' => false ); // Handle the upload using WP's wp_handle_upload function. Takes the posted file and an options array $uploaded_file = wp_handle_upload($_FILES['profile_photo'], $upload_overrides); // If the wp_handle_upload call returned a local path for the image if(isset($uploaded_file['file'])) { // The wp_insert_attachment function needs the literal system path, which was passed back from wp_handle_upload $file_name_and_location = $uploaded_file['file']; // Generate a title for the image that'll be used in the media library $file_title_for_media_library = 'your title here'; // Set up options array to add this file as an attachment $attachment = array( 'post_mime_type' => $uploaded_file_type, 'post_title' => 'Uploaded image ' . addslashes($file_title_for_media_library), 'post_content' => '', 'post_status' => 'inherit' ); // Run the wp_insert_attachment function. This adds the file to the media library and generates the thumbnails. If you wanted to attch this image to a post, you could pass the post id as a third param and it'd magically happen. $attach_id = wp_insert_attachment( $attachment, $file_name_and_location ); require_once(ABSPATH . "wp-admin" . '/includes/image.php'); $attach_data = wp_generate_attachment_metadata( $attach_id, $file_name_and_location ); wp_update_attachment_metadata($attach_id, $attach_data); update_user_meta( $user_id, 'profile_photo', $attach_id ); } } } }