use PhpOffice\PhpSpreadsheet\IOFactory; function bg_load_xlsx_rows($url) { $response = wp_remote_get($url); if ( is_wp_error($response) ) return []; $file_content = wp_remote_retrieve_body($response); if (empty($file_content)) return []; // save to temp $tmp = wp_tempnam($url); file_put_contents($tmp, $file_content); // load with PhpSpreadsheet $spreadsheet = IOFactory::load($tmp); unlink($tmp); $sheet = $spreadsheet->getActiveSheet(); $rows = $sheet->toArray(null, true, true, true); // parse headers $header = []; $data = []; foreach ($rows as $index => $row) { if ($index === 1) { foreach ($row as $col => $val) { $normalized = strtolower(preg_replace('/[^a-z0-9]+/', '', trim($val))); $header[$col] = $normalized; } continue; } $assoc = []; foreach ($row as $col => $val) { $key = $header[$col] ?? $col; $assoc[$key] = trim((string)$val); } if (!empty($assoc['submission'])) { $data[] = $assoc; } } return $data; }