Creating template overrides in Event Schedule Manager (ESM) might be not as straightforward, but it’s not rocket science either. Let’s see.
ESM has templates for three of its post types: sessions, speakers, and sponsors. The respective template files can be found in the event-schedule-manager/templates/ folder.
Although the plugin does not include a built-in method for creating template overrides for these, a simple snippet can do the trick.
Check out our article about how to best implement custom code snippets on your site.
add_filter( 'single_template', function( $template ) {
// Bail, if not Event Schedule Manager
if ( ! str_contains( $template, 'event-schedule-manager/templates') ) {
return $template;
}
// Get the template override.
$template_override = trailingslashit( get_stylesheet_directory() ) . 'event-schedule-manager/' . basename( $template );
// Check if the file exists.
if ( file_exists( $template_override ) ) {
return $template_override;
}
return $template;
}, 20, 1 );
The above snippet will instruct WordPress that if one of the templates from Event Schedule Manager is about to be used, first check if there is a template override available in the child theme, and make use of that.
Let’s talk about the files themselves.
First, go to your child theme folder (wp-content/themes/{your-child-theme}) and create a folder named event-schedule-manager.
Then copy and paste the template files you want to override from the wp-content/plugins/event-schedule-manager/templates/ folder in the newly created folder in your child theme.
In the end, the folder and file structure for the overrides should look like this:
wp root
|-- wp-content
|-- themes
|-- my-child-theme
|-- event-schedule-manager
|-- session-template.php
|-- speaker-template.php
|-- sponsor-template.php
Now you can start editing these templates to your heart’s desire.