parse_csv($file['tmp_name']); if (!$csv_data) { wp_die(__('Error parsing CSV file.', 'studiou-wc-ord-print-statuses')); } $updated_count = 0; $errors = array(); foreach ($csv_data as $row) { if (!isset($row['order_no'])) { $errors[] = __('Invalid row format in CSV.', 'studiou-wc-ord-print-statuses'); continue; } $order = wc_get_order($row['order_no']); if (!$order) { $errors[] = sprintf(__('Order %s not found.', 'studiou-wc-ord-print-statuses'), $row['order_no']); continue; } $order->update_status('wc-completed'); $order->update_meta_data('external_ref_ord_delivered', current_time('mysql')); $order->save(); $updated_count++; } $message = sprintf(__('%d orders updated successfully.', 'studiou-wc-ord-print-statuses'), $updated_count); if (!empty($errors)) { $message .= ' ' . sprintf(__('%d errors occurred: %s', 'studiou-wc-ord-print-statuses'), count($errors), implode(', ', $errors)); } wp_redirect(add_query_arg('message', urlencode($message), admin_url('admin.php?page=studiou-import-protocols'))); exit; } private function parse_csv($file_path) { $csv_data = array(); if (($handle = fopen($file_path, "r")) !== FALSE) { $headers = fgetcsv($handle, 1000, ";"); while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { $csv_data[] = array_combine($headers, $data); } fclose($handle); } return $csv_data; } }