- Introduced a new specification for adding an optional contact email field to events, including front-end output and compatibility testing. - Added a comprehensive design document for multi-day event occurrences, detailing the new occurrence data model, validation, normalization, and calendar architecture. - Created specifications for ACF field-key switching compatibility and local ACF override compatibility to ensure seamless integration with existing themes. - Implemented a desktop calendar view toggle design, allowing users to switch between calendar and list views, with persistent preferences and responsive behavior.
1.3 KiB
Event Contact Email Design
Objective
Add an optional contact email to event editing and display it as a clickable email link on single-event pages only.
Field Model
The built-in Event Details ACF group adds an optional field with:
- Label:
Contact Email - Name:
event_contact_email - Type:
email
The field is stored at event level because it applies to the event rather than an individual occurrence. Admin-created override groups may add a field with the same name to use the same front-end output.
Front-End Output
templates/single-event.php adds a Contact Email row within the existing event details. The row is omitted when the value is empty or invalid. Valid addresses render as a mailto: link. The visible address is protected with WordPress's antispambot() helper, and the address and URL are escaped for their output contexts.
Archive cards and calendar views do not display the contact email.
Compatibility and Testing
Existing events require no migration because the field is optional. Tests verify the built-in field registration contract and the single-event template's conditional, sanitized email output. PHP syntax and the complete test suite must pass.
Out of Scope
- Contact names, phone numbers, or reusable contact records.
- Sending email through WordPress.
- Displaying contact email on archives or calendars.