<?php if (!defined(ABSPATH)) { $pagePath = explode('/wp-content/', dirname(__FILE__)); include_once(str_replace('wp-content/', '', $pagePath[0] . '/wp-load.php')); } $wordpress_upload_dir = wp_upload_dir(); // $wordpress_upload_dir['path'] is the full server path to wp-content/uploads/2017/05, for multisite works good as well // $wordpress_upload_dir['url'] the absolute URL to the same folder, actually we do not need it, just to show the link to file $i = 1; // number of tries when the file with the same name is already exists $profilepicture = $_FILES['profilepicture']; //Field Name from HTML Form $new_file_path = $wordpress_upload_dir['path'] . '/' . $profilepicture['name']; $new_file_mime = mime_content_type($profilepicture['tmp_name']); if (empty($profilepicture)) die('File is not selected.'); if ($profilepicture['error']) die($profilepicture['error']); if ($profilepicture['size'] > wp_max_upload_size()) die('It is too large than expected.'); if (!in_array($new_file_mime, get_allowed_mime_types())) die('WordPress doesn\'t allow this type of uploads.'); while (file_exists($new_file_path)) { $i++; $new_file_path = $wordpress_upload_dir['path'] . '/' . $i . '_' . $profilepicture['name']; } // looks like everything is OK if (move_uploaded_file($profilepicture['tmp_name'], $new_file_path)) { $upload_id = wp_insert_attachment(array( 'guid' => $new_file_path, 'post_mime_type' => $new_file_mime, 'post_title' => preg_replace('/\.[^.]+$/', '', $profilepicture['name']), 'post_content' => '', 'post_status' => 'inherit' ), $new_file_path); // wp_generate_attachment_metadata() won't work if you do not include this file require_once(ABSPATH . 'wp-admin/includes/image.php'); // Generate and save the attachment metas into the database wp_update_attachment_metadata($upload_id, wp_generate_attachment_metadata($upload_id, $new_file_path)); // Show the uploaded file in browser // Store in A Variable $myImage = $wordpress_upload_dir['url'] . '/' . basename($new_file_path); }
