upskill-event-manager/docs/TEC-V5-FIELD-MAPPING.md
Ben 25d5c9ac7d feat: implement TEC v5.0.8 field mapping and best practices
- Created comprehensive field mapping documentation for TEC v5.0.8
- Documented all meta keys, input selectors, and field types
- Built validation tests using correct TEC v5.0.8 selectors
- Verified working selectors through staging environment testing
- Added best practices guide with implementation patterns
- Included JavaScript and PHP code examples
- Documented common issues and solutions
- Added debugging tips and performance optimizations

Test results show successful field discovery and persistence:
- Title, Start Date, End Date, and URL fields verified working
- Cost field may be hidden when Events Tickets is active
- All date/time fields use expected selectors
- Venue and organizer fields use array notation in names

🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 13:29:20 -03:00

8.4 KiB

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

// 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

// 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

// 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

# 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

// 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