// ✅ Handle AJAX ticket creation (guest + logged-in) add_action('wp_ajax_nopriv_srt_submit_ticket', 'srt_create_ticket'); add_action('wp_ajax_srt_submit_ticket', 'srt_create_ticket'); function srt_create_ticket() { $admin_email = get_option('admin_email'); if (!isset($_POST['srt_nonce']) || !wp_verify_nonce($_POST['srt_nonce'], 'srt_submit_ticket_nonce')) { wp_mail($admin_email, '❌ Support Ticket Error: Nonce Failed', print_r($_POST, true)); wp_send_json_error(['message' => 'Security check failed']); } $is_guest = isset($_POST['is_guest']) && $_POST['is_guest'] === '1'; $user_id = get_current_user_id(); $order_id = intval($_POST['srt_order'] ?? 0); $issue_type = sanitize_text_field($_POST['srt_issue_type'] ?? ''); $subject = sanitize_text_field($_POST['srt_subject'] ?? ''); $message = wp_kses_post($_POST['srt_message'] ?? ''); $new_address = sanitize_textarea_field($_POST['srt_new_address'] ?? ''); $guest_email = $is_guest ? sanitize_email($_POST['srt_email'] ?? '') : ''; $guest_name = $is_guest ? sanitize_text_field($_POST['srt_name'] ?? '') : ''; $guest_postcode = $is_guest ? sanitize_text_field($_POST['srt_postcode'] ?? '') : ''; if (!$order_id || !$subject || !$message || ($is_guest && empty($guest_email))) { wp_mail($admin_email, '❌ Support Ticket Error: Missing Fields', print_r($_POST, true)); wp_send_json_error(['message' => 'Missing required fields']); } $ticket_id = wp_insert_post([ 'post_type' => 'support_ticket', 'post_title' => wp_strip_all_tags($subject), 'post_content' => $message, 'post_status' => 'publish', 'post_author' => $user_id ?: 0, ]); if (is_wp_error($ticket_id)) { wp_mail($admin_email, '❌ Ticket Creation Failed', $ticket_id->get_error_message() . "\n\n" . print_r($_POST, true)); wp_send_json_error(['message' => 'Ticket creation failed.']); } update_post_meta($ticket_id, '_srt_order', $order_id); update_post_meta($ticket_id, '_srt_issue_type', $issue_type); update_post_meta($ticket_id, '_srt_new_address', $new_address); update_post_meta($ticket_id, '_srt_status', 'open'); update_post_meta($ticket_id, '_srt_ip', $_SERVER['REMOTE_ADDR'] ?? 'unknown'); if ($is_guest) { update_post_meta($ticket_id, 'srt_guest', '1'); update_post_meta($ticket_id, 'srt_email', $guest_email); update_post_meta($ticket_id, 'srt_name', $guest_name); update_post_meta($ticket_id, 'srt_postcode', $guest_postcode); } if (!empty($_FILES['srt_attachments']['name'][0])) { require_once ABSPATH . 'wp-admin/includes/file.php'; require_once ABSPATH . 'wp-admin/includes/media.php'; require_once ABSPATH . 'wp-admin/includes/image.php'; $files = $_FILES['srt_attachments']; foreach ($files['name'] as $i => $name) { if (empty($name)) continue; $file = [ 'name' => $files['name'][$i], 'type' => $files['type'][$i], 'tmp_name' => $files['tmp_name'][$i], 'error' => $files['error'][$i], 'size' => $files['size'][$i] ]; $upload = media_handle_sideload($file, $ticket_id); if (is_wp_error($upload)) { wp_mail($admin_email, '❌ File Upload Error', $upload->get_error_message()); } else { add_post_meta($ticket_id, '_srt_attachment', $upload); } } } if (!$user_id && $is_guest && $guest_email && $order_id) { $order = wc_get_order($order_id); if ($order && strtolower($order->get_billing_email()) === strtolower($guest_email)) { update_post_meta($ticket_id, '_linked_to_guest_order', $order_id); } } wp_send_json_success([ 'redirect_url' => home_url("/support-ticket-view/?ticket={$ticket_id}") ]); } https://sugarrushemporium.co.uk/post-sitemap.xml 2025-05-31T18:34:26+00:00 https://sugarrushemporium.co.uk/page-sitemap.xml 2025-06-21T22:28:06+00:00 https://sugarrushemporium.co.uk/product-sitemap.xml 2025-06-22T22:01:24+00:00 https://sugarrushemporium.co.uk/product-sitemap2.xml 2025-06-22T22:01:24+00:00 https://sugarrushemporium.co.uk/order_status-sitemap.xml 2025-06-02T22:07:16+00:00 https://sugarrushemporium.co.uk/category-sitemap.xml 2025-05-31T18:34:26+00:00 https://sugarrushemporium.co.uk/post_tag-sitemap.xml 2025-04-30T17:47:57+00:00 https://sugarrushemporium.co.uk/product_brand-sitemap.xml 2025-06-04T07:54:53+00:00 https://sugarrushemporium.co.uk/product_cat-sitemap.xml 2025-06-22T22:01:24+00:00 https://sugarrushemporium.co.uk/product_tag-sitemap.xml 2025-05-09T19:39:13+00:00 https://sugarrushemporium.co.uk/author-sitemap.xml 2025-06-07T19:10:50+00:00