Theming Event Espresso Pages

Event Espresso integrates seamlessly with your WordPress theme to display events on your website. Like posts and pages, Event Espresso uses your theme’s template files to determine how event content appears. This approach means that Event Espresso is generally compatible with all well-built WordPress themes.

If you’re using a page builder like Elementor, we have an experimental integration between Event Espresso and Elementor that allows you to display Event Espresso tickets, dates, and venues as shortcodes within Elementor. With Elementor Pro, you can customize the Single and Archive post templates using the Template editor to fit any layout and design. Contact our support team for details.

This guide explains:

  • Which template files are used for event pages
  • How Event Espresso chooses which template to load
  • Best practices for customizing layouts safely

🧩 Overview

When you activate Event Espresso, it registers several main post types but specifically: Events (espresso_event) – represents a single event.

WordPress uses the Template Hierarchy to decide which file in your theme should be used to display each type of page.

📄 Template Files Used by Event Espresso

Context Template Loaded Description
Single Event Page single-espresso_event.php → single.php → index.php Displays one event with details, datetimes, ticket selector, and description.
Event List / Archive Page archive-espresso_event.php → archive.php → index.php Displays multiple events (for example, all upcoming events or filtered by category).
Category Archive Page taxonomy-espresso_event_categories.php → taxonomy.php → archive.php Displays events within a specific category.
Venue Archive Page taxonomy-espresso_venue.php (if the Venues add-on is active) Displays events for a specific venue.

‼️ If your theme doesn’t include a specialized espresso_*.php template, WordPress automatically falls back to your theme’s single.php or archive.php file.

🧠 How Event Espresso Integrates with Themes

Event Espresso follows WordPress’s built-in template hierarchy instead of using its own layout engine.

That means:

  • Your events inherit your theme’s styling, typography, and structure.
  • Event Espresso’s content (title, date, tickets, description, etc.) is injected into the_content() — it appears wherever your theme outputs post content.

🎨 Example Template Files

To customize layouts, you can create custom template files in your theme or child theme.

1. Single Event Template

Create this file:

/wp-content/themes/{your-child-theme}/single-espresso_event.php

Example:

<?php get_header(); ?>

<main id="primary" class="site-main espresso-single-event">
  <?php while ( have_posts() ) : the_post(); ?>
    <h1 class="event-title"><?php the_title(); ?></h1>

    <div class="event-date">
      <?php espresso_list_of_event_dates(); ?>
    </div>

    <div class="ticket-selector">
      <?php espresso_ticket_selector(); ?>
    </div>

    <div class="event-content">
      <?php the_content(); ?>
    </div>
  <?php endwhile; ?>
</main>

<?php get_footer(); ?>

2. Event Archive Template

Create this file:

/wp-content/themes/your-theme/archive-espresso_event.php
<?php get_header(); ?>

<main id="primary" class="site-main espresso-archive">
<h1 class="archive-title"><?php post_type_archive_title(); ?></h1>

<?php if ( have_posts() ) : ?>
<div class="event-list">
<?php while ( have_posts() ) : the_post(); ?>
<article <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php espresso_event_date_range(); ?>
<?php espresso_venue_name(); ?>
</article>
<?php endwhile; ?>
</div>

<?php the_posts_navigation(); ?>
<?php else : ?>
<p>No upcoming events found.</p>
<?php endif; ?>
</main>

<?php get_footer(); ?>
Recommendation Description
Use a Child Theme Don’t edit your parent theme’s templates directly. Copy them into a child theme to preserve your changes when the theme updates.
Keep Logic in Functions, Not Templates Use hooks and filters (like FHEE__content_espresso_events_details) to add or remove content instead of embedding PHP logic inside templates.
Leverage Shortcodes Inside custom templates, use Event Espresso shortcodes like [ESPRESSO_TICKET_SELECTOR], [ESPRESSO_EVENT_ATTENDEES], or [ESPRESSO_CALENDAR] or [EVENTS_CALENDAR_PLUS].
Inspect CSS Classes Event Espresso adds CSS classes such as .espresso-event, .espresso-datetime, and .espresso-ticket-selector for styling flexibility.
Test Responsiveness Always test both single and archive templates on mobile and desktop to ensure consistent layouts.

🧩 Developer Hooks & Filters

You can modify front-end event content using filters instead of editing theme files.

add_filter(
'FHEE__content_espresso_events_details__template',
function ( $content ) {
return &'<div class="custom-wrapper">' . $content . '</div>';
  }
);

See also:

While we could recommend themes, generally, Event Espresso will work out-of-the box with any well-built theme.


You have three options: use a custom template, customize your Single template, or use a page builder to make changes to your liking. If you have any questions or concerns, please reach out to our support team.

🧾 Summary

Event Espresso uses your WordPress theme’s standard template hierarchy for event display.

To customize:

  1. Copy the relevant file (single-espresso_event.php or archive-espresso_event.php) into your child theme.
  2. Adjust layout or content as needed.
  3. Avoid editing Event Espresso’s core plugin files.

This approach keeps your events consistent with your theme’s design while ensuring update safety and long-term maintainability.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.