'error', 'message' => 'File does not exist or is not readable: ' . $file_path ); } // Include required WordPress files if (!function_exists('wp_handle_upload')) { require_once ABSPATH . 'wp-admin/includes/file.php'; } if (!function_exists('wp_generate_attachment_metadata')) { require_once ABSPATH . 'wp-admin/includes/image.php'; } if (!function_exists('media_handle_sideload')) { require_once ABSPATH . 'wp-admin/includes/media.php'; } // Create a temporary copy for WordPress to handle $temp_file = wp_tempnam(basename($file_path)); if (!copy($file_path, $temp_file)) { return array( 'status' => 'error', 'message' => 'Failed to create temporary file copy' ); } $file_array = array( 'name' => basename($file_path), 'tmp_name' => $temp_file ); $id = media_handle_sideload($file_array, $post_id); if (is_wp_error($id)) { wp_delete_file($temp_file); return array( 'status' => 'error', 'message' => $id->get_error_message() ); } $value = wp_get_attachment_url($id); return array( 'status' => 'success', 'message' => $value ); } /** * Handle media importing * * @param mixed $url * @param mixed $post_id * * @return array * @since 8.5.21 */ public static function wpvr_handle_media_import($url, $post_id) { add_filter('https_ssl_verify', '__return_false'); add_filter('https_local_ssl_verify', '__return_false'); $tmp = download_url($url); $file_array = array( 'name' => basename($url), 'tmp_name' => $tmp ); if (is_wp_error($tmp)) { wp_delete_file($file_array['tmp_name']); return (array( 'status' => 'error', 'message' => $tmp->get_error_message() )); } $id = media_handle_sideload($file_array, $post_id); if (is_wp_error($id)) { wp_delete_file($file_array['tmp_name']); return (array( 'status' => 'error', 'message' => $tmp->get_error_message() )); } remove_filter('https_ssl_verify', '__return_false'); remove_filter('https_local_ssl_verify', '__return_false'); $value = wp_get_attachment_url($id); return (array( 'status' => 'success', 'message' => $value )); } /** * Delete temporary files (deprecated - no longer needed with direct file loading) * * @return void * @since 8.5.21 * @deprecated No longer needed with direct file loading approach */ public static function wpvr_delete_temp_file() { // This method is deprecated and no longer needed since we load files directly // from the sample-data directory instead of extracting from ZIP files. // Keeping for backward compatibility but it does nothing. return; } }