- The attendee does not receive the photo.
- Only the admin receives the file reference in their confirmation email.
You can view where the original template files for emails for Event Tickets and Event Tickets Plus are located here:
https://theeventscalendar.com/knowledgebase/ticket-rsvp-template-files/#emails
The email templates are different for the admin in this setup and require following the override conventions described in the above link.
To include a link to the uploaded photo ID in admin emails, the following templates must be customized and placed inside your theme:
{your-theme}/tribe/tickets/emails/admin-new-order.php
{your-theme}/tribe/tickets/emails/new-order/admin-body.php
{your-theme}/tribe/tickets/emails/template-parts/body/order/attendees-table/admin-attendee-info.php
{your-theme}/tribe/tickets/emails/template-parts/body/order/admin-attendees-table.php
You must create a new template file for the modal and place it inside your theme. This file is specifically for rendering the upload modal. It will be referenced by a PHP class created later.
This modal works in conjunction with a JavaScript file that handles the file upload upon input change. The JavaScript file lives in the plugin (not the theme) and will be discussed separately.
The modal template should be located at:
This is a lightweight plugin where the core functionality lives. It extends Event Tickets Plus to support file uploads tied to attendee metadata.
Main class file:
- The
OtslrUploadclass is a custom WordPress plugin component that registers a secure REST API endpoint to handle file uploads for attendees. - Files are uploaded to a custom directory inside the WordPress uploads folder.
- The directory itself is permanent and structured by ticket and attendee IDs.
- A transient is created to temporarily store the file reference and metadata.
Uploaded files are saved in the following format:
/wp-content/uploads/tribe/attendee-meta/{ticket_id}/{attendee_id}/
This folder is persistent unless manually deleted.
If the upload is successful, a transient is created for 48 hours using this structure:
[
'url' => 'https://example.com/wp-content/uploads/tribe/attendee-meta/...',
'transient_id' => 'otslr_attendee_file_{ticket_id}_{attendee_id}',
'attendee_id' => {attendee_id},
'ticket_id' => {ticket_id},
'label' => {field_key}
]A single Photo ID field has been created for the admin interface. This is a file input restricted to one field per attendee, labeled specifically as "Photo ID".
Currently, only one file upload field is allowed per attendee.
All templates for the admin interface are located in the following directory:
plugins/otslr-additional-fields/src/admin-views/meta-fields/
These templates control how the custom field appears in the attendee admin area.
The following file is intentionally left empty:
This file exists to satisfy the system's structure but does not require any content, as the logic is handled in the other files within the meta-fields folder.