# The Events Calendar v5.0.8 Field Mapping ## Overview This document provides the definitive field mapping for The Events Calendar (TEC) v5.0.8 and Community Events 5.0.8, documenting the correct selectors and meta keys for all event-related fields. ## Plugin Versions - **The Events Calendar**: 6.14.2 - **The Events Calendar Community Events**: 5.0.8 - **Events Calendar Pro**: 7.6.3 ## Field Mapping Structure ### 1. Core Event Fields | Field Name | Meta Key | Input Selector | Field Type | Notes | |------------|----------|----------------|------------|-------| | Event Title | post_title | `#title` | text input | Standard WordPress title field | | Event Description | post_content | `#content` | wysiwyg/textarea | WordPress content editor | | Event Excerpt | post_excerpt | `#excerpt` | textarea | WordPress excerpt field | | Event Status | post_status | `#post_status` | select | WordPress status dropdown | ### 2. Date & Time Fields | Field Name | Meta Key | Input Selector | Field Type | Notes | |------------|----------|----------------|------------|-------| | Start Date | `_EventStartDate` | `#EventStartDate` | date input | Format: YYYY-MM-DD | | End Date | `_EventEndDate` | `#EventEndDate` | date input | Format: YYYY-MM-DD | | Start Time | - | `#EventStartTime` | time input | Format: HH:MM am/pm | | End Time | - | `#EventEndTime` | time input | Format: HH:MM am/pm | | All Day Event | `_EventAllDay` | `#EventAllDay` | checkbox | Boolean (0/1) | | Start Date UTC | `_EventStartDateUTC` | - | hidden/auto | Calculated from local time | | End Date UTC | `_EventEndDateUTC` | - | hidden/auto | Calculated from local time | | Event Duration | `_EventDuration` | - | hidden/auto | Calculated in seconds | | Timezone | `_EventTimezone` | `select[name="EventTimezone"]` | select | Timezone dropdown | | Timezone Abbr | `_EventTimezoneAbbr` | - | hidden/auto | Auto-generated (e.g., CST) | ### 3. Cost & Currency Fields | Field Name | Meta Key | Input Selector | Field Type | Notes | |------------|----------|----------------|------------|-------| | Event Cost | `_EventCost` | `#EventCost` | text input | Numeric value | | Currency Symbol | `_EventCurrencySymbol` | `#EventCurrencySymbol` | text input | Default: $ | | Currency Code | `_EventCurrencyCode` | `#EventCurrencyCode` | text input | e.g., USD | | Currency Position | - | `select[name="EventCurrencyPosition"]` | select | prefix/suffix | ### 4. Event Details | Field Name | Meta Key | Input Selector | Field Type | Notes | |------------|----------|----------------|------------|-------| | Event URL | `_EventURL` | `#EventURL` | url input | External event website | | Show Map | `_EventShowMap` | `#EventShowMap` | checkbox | Boolean (0/1) | | Show Map Link | `_EventShowMapLink` | `#EventShowMapLink` | checkbox | Boolean (0/1) | | Event Origin | `_EventOrigin` | - | hidden | Set to 'events-calendar' | ### 5. Venue Fields | Field Name | Meta Key | Input Selector | Field Type | Notes | |------------|----------|----------------|------------|-------| | Venue ID | `_EventVenueID` | `select[name="venue[VenueID]"]` | select | Links to venue post | | Venue Name | `_VenueVenue` | `input[name="venue[Venue]"]` | text input | For new venues | | Venue Address | `_VenueAddress` | `input[name="venue[Address]"]` | text input | Street address | | Venue City | `_VenueCity` | `input[name="venue[City]"]` | text input | City name | | Venue State/Province | `_VenueStateProvince` | `input[name="venue[State]"]` | text input | State code | | Venue Zip/Postal | `_VenueZip` | `input[name="venue[Zip]"]` | text input | Postal code | | Venue Country | `_VenueCountry` | `select[name="venue[Country]"]` | select | Country dropdown | | Venue Phone | `_VenuePhone` | `input[name="venue[Phone]"]` | tel input | Phone number | | Venue Website | `_VenueURL` | `input[name="venue[URL]"]` | url input | Venue website | | Show Venue Map | `_VenueShowMap` | `input[name="venue[ShowMap]"]` | checkbox | Boolean | | Show Venue Map Link | `_VenueShowMapLink` | `input[name="venue[ShowMapLink]"]` | checkbox | Boolean | ### 6. Organizer Fields | Field Name | Meta Key | Input Selector | Field Type | Notes | |------------|----------|----------------|------------|-------| | Organizer ID | `_EventOrganizerID` | `select[name="organizer[OrganizerID]"]` | select | Links to organizer post | | Organizer Name | `_OrganizerOrganizer` | `input[name="organizer[Organizer]"]` | text input | For new organizers | | Organizer Email | `_OrganizerEmail` | `input[name="organizer[Email]"]` | email input | Contact email | | Organizer Phone | `_OrganizerPhone` | `input[name="organizer[Phone]"]` | tel input | Contact phone | | Organizer Website | `_OrganizerWebsite` | `input[name="organizer[Website]"]` | url input | Organizer website | ## JavaScript Best Practices for TEC v5.0.8 ### 1. Field Access Pattern ```javascript // Best practice: Check multiple possible selectors async function getTECField(page, fieldName, selectors) { for (const selector of selectors) { const element = await page.$(selector); if (element && await element.isVisible()) { return element; } } return null; } // Example usage const startDateField = await getTECField(page, 'Start Date', [ '#EventStartDate', 'input[name="EventStartDate"]', '.tribe-datetime-block input[name*="StartDate"]' ]); ``` ### 2. Setting Field Values ```javascript // Date fields await page.fill('#EventStartDate', '2025-12-25'); // Time fields (may need special handling) await page.fill('#EventStartTime', '09:00 AM'); // Checkbox fields const showMapCheckbox = await page.$('#EventShowMap'); if (showMapCheckbox) { await showMapCheckbox.check(); } // Dropdown fields await page.selectOption('select[name="venue[VenueID]"]', { value: '123' }); ``` ### 3. Reading Field Values ```javascript // Text inputs const eventCost = await page.$eval('#EventCost', el => el.value); // Checkboxes const showMap = await page.$eval('#EventShowMap', el => el.checked); // Dropdowns const venueId = await page.$eval('select[name="venue[VenueID]"]', el => el.value); ``` ## Meta Data Storage ### Direct Meta Update via WP-CLI ```bash # Update event cost wp post meta update EVENT_ID _EventCost "299" # Update venue ID wp post meta update EVENT_ID _EventVenueID VENUE_ID # Update date/time wp post meta update EVENT_ID _EventStartDate "2025-12-25 09:00:00" wp post meta update EVENT_ID _EventEndDate "2025-12-25 17:00:00" ``` ### PHP Meta Update ```php // Update event meta update_post_meta($event_id, '_EventCost', '299'); update_post_meta($event_id, '_EventCurrencySymbol', '$'); update_post_meta($event_id, '_EventURL', 'https://example.com/event'); update_post_meta($event_id, '_EventVenueID', $venue_id); update_post_meta($event_id, '_EventOrganizerID', $organizer_id); // Date/time with UTC conversion $start_date = '2025-12-25 09:00:00'; update_post_meta($event_id, '_EventStartDate', $start_date); update_post_meta($event_id, '_EventStartDateUTC', get_gmt_from_date($start_date)); ``` ## Testing Checklist ### Essential Fields to Verify - [ ] Event Title (`#title`) - [ ] Event Content (`#content`) - [ ] Start Date (`#EventStartDate`) - [ ] End Date (`#EventEndDate`) - [ ] Start Time (`#EventStartTime`) - [ ] End Time (`#EventEndTime`) - [ ] Event Cost (`#EventCost`) - [ ] Event URL (`#EventURL`) - [ ] Venue Selection/Creation - [ ] Organizer Selection/Creation - [ ] Map Display Options ### Field Persistence Test 1. Create/edit event with all fields 2. Save event 3. Reload edit page 4. Verify all fields retained values 5. Check database meta values ## Known Issues & Workarounds ### Issue 1: Cost Field May Be Hidden Some TEC configurations hide the cost field if Events Tickets is active. **Workaround**: Check for field visibility before attempting to fill. ### Issue 2: Venue/Organizer Dropdowns These may be AJAX-loaded or use Select2/Chosen libraries. **Workaround**: Wait for elements to be fully loaded before interaction. ### Issue 3: Date Format Variations Different sites may use different date formats based on WordPress settings. **Workaround**: Check site date format setting and adjust accordingly. ## Version History - **v1.0** (2025-08-18): Initial mapping for TEC v5.0.8 - Based on staging environment testing - Verified with Events Calendar Community Events 5.0.8 ## References - [TEC Developer Docs](https://theeventscalendar.com/knowledgebase/) - [TEC GitHub Repository](https://github.com/the-events-calendar/the-events-calendar) - WordPress Meta API Documentation