function front_template()

in web/wp-content/plugins/acf-extended/includes/modules/post-type/module-post-type-features.php [197:254]


    function front_template($template){
        
        if(!is_single() && !is_post_type_archive() && !is_home()){
            return $template;
        }
        
        // Get_query_var
        $query_var = get_query_var('post_type', false);
        
        if(is_array($query_var) && !empty($query_var)){
            $query_var = $query_var[0];
        }
        
        foreach(get_post_types(array(), 'objects') as $post_type){
            
            // Get_query_var check
            $is_query_var = $query_var && $query_var === $post_type->name;
            
            // Get_post_type check
            $get_post_type = get_post_type() === $post_type->name;
            
            // Acfe_archive_template
            $acfe_archive_template = isset($post_type->acfe_archive_template) && !empty($post_type->acfe_archive_template);
            
            // Acfe_archive_template
            $acfe_single_template = isset($post_type->acfe_single_template) && !empty($post_type->acfe_single_template);
            
            // Global check
            if(!$get_post_type || !$is_query_var || (!$acfe_archive_template && !$acfe_single_template)){
                continue;
            }
            
            $rule = array();
            $rule['is_archive'] = is_post_type_archive($post_type->name);
            $rule['has_archive'] = $post_type->has_archive;
            $rule['is_single'] = is_singular($post_type->name);
            
            // Post Exception
            if($post_type->name === 'post'){
                $rule['is_archive'] = is_home();
                $rule['has_archive'] = true;
            }
            
            // Archive
            if($rule['has_archive'] && $rule['is_archive'] && $acfe_archive_template && ($locate = locate_template(array($post_type->acfe_archive_template)))){
                return $locate;
            }
            
            // Single
            elseif($rule['is_single'] && $acfe_single_template && ($locate = locate_template(array($post_type->acfe_single_template)))){
                return $locate;
            }
            
        }
        
        return $template;
        
    }