function ebem_create_event_on_eventbrite($data) { $api_token = get_option('ebem_api_token'); if (empty($api_token)) { error_log('EBEM Error: API token not set.'); return ['success' => false, 'message' => 'API token missing']; } $url = "https://www.eventbriteapi.com/v3/organizations/{$data['organization_id']}/events/"; $body = [ 'event.name.html' => $data['title'], 'event.description.html' => $data['description'], 'event.start.utc' => $data['start_date'], 'event.start.timezone' => $data['timezone'] ?? 'UTC', 'event.end.utc' => $data['end_date'], 'event.end.timezone' => $data['timezone'] ?? 'UTC', ]; $args = [ 'headers' => [ 'Authorization' => 'Bearer ' . $api_token, 'Content-Type' => 'application/json', ], 'body' => json_encode($body), 'timeout' => 30, ]; error_log('EBEM Request URL: ' . $url); error_log('EBEM Request Body: ' . print_r($body, true)); error_log('EBEM Request Args: ' . print_r($args, true)); $response = wp_remote_post($url, $args); if (is_wp_error($response)) { error_log('EBEM WP_Error: ' . $response->get_error_message()); return ['success' => false, 'message' => 'Request failed: ' . $response->get_error_message()]; } $code = wp_remote_retrieve_response_code($response); $body_response = wp_remote_retrieve_body($response); error_log('EBEM Response Code: ' . $code); error_log('EBEM Response Body: ' . $body_response); if ($code >= 200 && $code < 300) { $json = json_decode($body_response, true); if (!empty($json['id'])) { return ['success' => true, 'event_id' => $json['id'], 'message' => 'Event created successfully on Eventbrite.']; } else { return ['success' => false, 'message' => 'Unexpected API response: ' . $body_response]; } } else { return ['success' => false, 'message' => 'Error creating event (HTTP ' . $code . '): ' . $body_response]; } }