Skip to content

Instantly share code, notes, and snippets.

@cliffordp
Last active October 12, 2022 17:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cliffordp/b76421f2490a8b8995493f203e11b331 to your computer and use it in GitHub Desktop.
Save cliffordp/b76421f2490a8b8995493f203e11b331 to your computer and use it in GitHub Desktop.
The Events Calendar and related plugins: Add your own location for template file loading.
<?php
/**
* The Events Calendar and related plugins: Add your own location for template file loading.
*
* Example "Single Event within List View" for Avada theme (which has theme overrides).
* Now tries to load in this order:
* This plugin: /app/public/wp-content/plugins/my-plugin/tribe-events/list/single-event.php
* Theme root so it stays even if switch themes: /app/public/wp-content/themes/tribe-events/list/single-event.php
* Child theme with theme overrides: /app/public/wp-content/themes/Avada-Child-Theme/tribe-events/list/single-event.php
* Parent theme with theme overrides: /app/public/wp-content/themes/Avada/tribe-events/list/single-event.php
* Plugin default: /app/public/wp-content/plugins/the-events-calendar/src/views/list/single-event.php
*
* @link https://gist.github.com/b76421f2490a8b8995493f203e11b331
*
* @see \Tribe__Events__Templates::getTemplateHierarchy()
*
* @param string $file The full file path trying to be loaded.
* @param string $template The template name, such as
*
* @return string
*/
function tribe_additional_template_locations( string $file, string $template ) {
// Put them in the order of priority (first location gets loaded before second location if first exists)
$new_locations = [
'my_plugin' => trailingslashit( plugin_dir_path( __FILE__ ) ) . 'tribe-events', // /app/public/wp-content/plugins/cliff-test-tec/tribe-events/default-template.php
'themes_root' => trailingslashit( get_theme_root() ) . 'tribe-events', // /app/public/wp-content/themes/tribe-events/default-template.php
];
foreach ( $new_locations as $location ) {
$new_file = trailingslashit( $location ) . $template;
if ( file_exists( $new_file ) ) {
return $new_file;
}
}
return $file;
}
add_filter( 'tribe_events_template', 'tribe_additional_template_locations', 10, 2 );
@mike-weiner
Copy link

mike-weiner commented Feb 4, 2020

@cliffordp Correct.

The Events Calendar v5.0+ introduced new calendar views. When you activate the new calendar views, this code snippet does not modify the new tooltip. If you leave the v2 views disabled on v5.0+, this code snippet still works.

@cliffordp
Copy link
Author

I confirmed that overriding v2 views requires different code. I'll create a new snippet today or tomorrow and post it to https://theeventscalendar.com/knowledgebase/k/customizing-template-files/, and I'll comment here when ready as well.

@mike-weiner
Copy link

You rock!
Thank you!

@cliffordp
Copy link
Author

I updated https://theeventscalendar.com/knowledgebase/k/custom-additional-template-locations/ for V2 (direct link is https://gist.github.com/cliffordp/39e68939132bd0f483e0111972165455).

Make sure to read the article and code comments, since things are a bit mismatchy right now if also customizing other plugins' template files, such as Event Tickets'.

We'd also love your 5-star rating on WordPress.org! 🥇

@mike-weiner
Copy link

👍🏻 Thank you for the great explanations!

I have tweaked some of this code to be used within my Wordpress plugin. Everything is opened sourced on Github and I have given you and TEC credit for the code. If you know of anyone who wants to add an event's venue name and address to the tooltip on the full-month calendar view, this could be an option.

@cliffordp
Copy link
Author

Thanks for the thanks and for sharing how you used it! :)

@mike-weiner
Copy link

@cliffordp - By chance are you still supporting this snippet?

After upgrading to TEC v6.0.1, my calls to tribe_address_exists() and tribe_get_full_address() have quit working when my active theme is Divi. When I switch to a different theme, these function calls work correctly.

@cliffordp
Copy link
Author

@mike-weiner You can contact https://theeventscalendar.com/support/ with your customization questions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment