Template_Loader
Source
File: includes/libs/templates/template-loader.class.php
class Template_Loader { public function __construct(){ add_filter( 'template_include', function( $template ){ if ( is_embed() ) { return $template; } $default_file = $this->get_template_default_file(); if( $default_file ){ $search_files = $this->get_template_loader_files( $default_file ); $template = locate_template( $search_files ); if( !$template || VIMEOTHEQUE_TEMPLATE_DEBUG_MODE ){ if( false !== strpos( $default_file, Plugin::instance()->get_cpt()->get_tag_tax() ) ){ $cs_template = str_replace( '_', '-', $default_file ); $template = \Vimeotheque\Helper::get_path() . '/templates/' . $cs_template; }else{ $template = \Vimeotheque\Helper::get_path() . '/templates/' . $default_file; } } } return $template; } ); } /** * Get the default filename for a template. * * @return string */ private function get_template_default_file(){ if( is_singular( Plugin::instance()->get_cpt()->get_post_type() ) ){ $default_file = 'single-'. Plugin::instance()->get_cpt()->get_post_type() .'.php'; }elseif ( Helper::is_video_taxonomy() ){ $object = get_queried_object(); if( is_tax( Plugin::instance()->get_cpt()->get_post_tax() ) || is_tax( Plugin::instance()->get_cpt()->get_tag_tax() ) ){ $default_file = 'taxonomy-' . $object->taxonomy . '.php'; }else{ $default_file = ''; } }elseif( is_post_type_archive() ){ $pt = get_query_var( 'post_type' ); if( !is_array( $pt ) ){ $pt = [$pt]; } if( in_array( Plugin::instance()->get_cpt()->get_post_type(), $pt ) ) { $default_file = 'archive-' . Plugin::instance()->get_cpt()->get_post_type() . '.php'; }else{ $default_file = ''; } }else{ $default_file = ''; } return $default_file; } private function get_template_loader_files( $default_file ) { $templates = []; if( is_singular( Plugin::instance()->get_cpt()->get_post_type() ) ){ $object = get_queried_object(); $name_decoded = urldecode( $object->post_name ); if( $name_decoded != $object->post_name ){ $templates[] = sprintf( 'single-%s-%s.php', Plugin::instance()->get_cpt()->get_post_type(), $name_decoded ); } $templates[] = sprintf( 'single-%s-%s.php', Plugin::instance()->get_cpt()->get_post_type(), $object->post_name ); } if( Helper::is_video_taxonomy() ){ $object = get_queried_object(); $templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php'; $templates[] = Helper::template_path() . 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php'; $templates[] = 'taxonomy-' . $object->taxonomy . '.php'; $templates[] = Helper::template_path() . 'taxonomy-' . $object->taxonomy . '.php'; if( is_tax( Plugin::instance()->get_cpt()->get_tag_tax() ) ){ $cs_taxonomy = str_replace( '_', '-', $object->taxonomy ); $cs_default = str_replace( '_', '-', $default_file ); $templates[] = 'taxonomy-' . $object->taxonomy . '-' . $object->slug . '.php'; $templates[] = Helper::template_path() . 'taxonomy-' . $cs_taxonomy . '-' . $object->slug . '.php'; $templates[] = 'taxonomy-' . $object->taxonomy . '.php'; $templates[] = Helper::template_path() . 'taxonomy-' . $cs_taxonomy . '.php'; $templates[] = $cs_default; } } $templates[] = $default_file; if ( isset( $cs_default ) ) { $templates[] = Helper::template_path() . $cs_default; } $templates[] = Helper::template_path() . $default_file; return array_unique( $templates ); } }
Methods
- __construct
- get_template_default_file — Get the default filename for a template.
- get_template_loader_files