| 
<?php
 /**
 * Locate a template and return the path for inclusion.
 *
 * @since 1.0.0
 *
 * @param mixed  $template_name
 * @param string $template_path (default: '')
 * @param string $default_path  (default: '')
 *
 * @return string
 */
 function event_story_locate_template( $template_name, $template_path = '', $default_path = '', $pro = false ) {
 if ( ! $template_path ) {
 $template_path = event_story()->template_path();
 }
 
 if ( ! $default_path ) {
 $default_path = event_story()->plugin_path() . '/templates/';
 }
 
 // Look within passed path within the theme - this is priority
 $template = locate_template(
 [
 trailingslashit( $template_path ) . $template_name,
 ]
 );
 
 // Get default template
 if ( ! $template ) {
 $template = $default_path . $template_name;
 }
 
 // Return what we found
 return apply_filters( 'event_story_locate_template', $template, $template_name, $template_path );
 }
 
 /**
 * Get template part implementation for templates.
 *
 * Looks at the theme directory first
 *
 * @since 1.0.0
 *
 * @param mixed  $slug
 * @param string $name (default: '')
 * @param array  $array (default: array())
 */
 function event_story_get_template_part( $slug, $name = '', $args = [] ) {
 if ( $args && is_array( $args ) ) {
 extract( $args );
 }
 
 $template = '';
 
 // Look in yourtheme/event-story/slug-name.php and yourtheme/event-story/slug.php
 $template = locate_template( [ event_story()->template_path() . "{$slug}-{$name}.php", event_story()->template_path() . "{$slug}.php" ] );
 $template_path = event_story()->plugin_path() . '/templates';
 
 // Get default slug-name.php
 if ( ! $template && $name && file_exists( $template_path . "/{$slug}-{$name}.php" ) ) {
 $template = $template_path . "/{$slug}-{$name}.php";
 }
 
 if ( ! $template && ! $name && file_exists( $template_path . "/{$slug}.php" ) ) {
 $template = $template_path . "/{$slug}.php";
 }
 
 // Allow 3rd party plugin filter template file from their plugin
 $template = apply_filters( 'event_story_get_template_part', $template, $slug, $name );
 
 if ( $template ) {
 include $template;
 }
 }
 
 /**
 * Get other templates (e.g. product attributes) passing attributes and including the file.
 *
 * @since 1.0.0
 *
 * @param mixed  $template_name
 * @param array  $args          (default: array())
 * @param string $template_path (default: '')
 * @param string $default_path  (default: '')
 *
 * @return void
 */
 function event_story_get_template( $template_name, $args = [], $template_path = '', $default_path = '' ) {
 if ( $args && is_array( $args ) ) {
 extract( $args );
 }
 
 $located = event_story_locate_template( $template_name, $template_path, $default_path );
 
 if ( ! file_exists( $located ) ) {
 _doing_it_wrong( __FUNCTION__, sprintf( '<code>%s</code> does not exist.', esc_html( $located ) ), '1.0.0.' );
 
 return;
 }
 
 do_action( 'event_story_before_template_part', $template_name, $template_path, $located, $args );
 
 include $located;
 
 do_action( 'event_story_after_template_part', $template_name, $template_path, $located, $args );
 }
 |