sanitize_file_name($file['name'] ?? ''), 'tmp_name' => $file['tmp_name'], 'size' => filesize($file['tmp_name']), 'type' => '', 'error' => UPLOAD_ERR_OK, ]; $directory = dirname($destination); $temporary_directory = static function ($uploads) use ($directory) { return array_merge($uploads, ['path' => $directory, 'basedir' => $directory, 'url' => '', 'baseurl' => '', 'subdir' => '', 'error' => false]); }; $result = []; add_filter('upload_dir', $temporary_directory, PHP_INT_MAX); try { $result = wp_handle_upload($file, [ 'test_form' => false, 'mimes' => $mimes, 'unique_filename_callback' => static function ($dir, $name, $ext) { return 'dbs-' . bin2hex(random_bytes(24)) . $ext; }, ]); if (empty($result['file']) || !empty($result['error'])) { return false; } require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php'; $filesystem = new \WP_Filesystem_Direct(null); return $filesystem->move($result['file'], $destination, true); } finally { remove_filter('upload_dir', $temporary_directory, PHP_INT_MAX); if (!empty($result['file']) && is_file($result['file'])) { wp_delete_file($result['file']); } } } }