PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.5.5
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.5.5
4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / includes / FrontEnd / TemplateLoader.php

TemplateLoader.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.5.5, at includes/FrontEnd/TemplateLoader.php

101 lines 3.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\FrontEnd;
4 use WPDeveloper\BetterDocs\Utils\Base;
5 use WPDeveloper\BetterDocs\Utils\Views;
6 use WPDeveloper\BetterDocs\Utils\Database;
7 use WPDeveloper\BetterDocs\Dependencies\DI\Container;
8
9 class TemplateLoader extends Base {
10 public $is_fse_theme = false;
11 private $templates_dir;
12 private $block_templates_dir;
13 private $container;
14 private $database;
15 private $views;
16
17 public function __construct( Container $container ) {
18 $this->container = $container;
19 $this->database = $this->container->get( Database::class );
20 $this->views = $this->container->get( Views::class );
21 }
22
23 public function init() {
24 $this->is_fse_theme = $this->is_fse_theme();
25
26 if ( $this->is_fse_theme ) {
27 // @todo: for FSE theme
28 }
29
30 if ( ! $this->is_fse_theme ) {
31 add_filter( 'archive_template', [$this, 'archive_template'] );
32 add_filter( 'single_template', [$this, 'single_template'] );
33 }
34 }
35
36 public function archive_template( $template ) {
37 if ( get_post_type() !== 'docs' ) {
38 return $template;
39 }
40
41 if ( is_embed() ) {
42 return $template;
43 }
44
45 $_default_template = 'templates/archives/layout-1';
46 $layout = $this->database->get_theme_mod( 'betterdocs_docs_layout_select', 'layout-1' );
47 $_template = 'templates/archives/' . $layout;
48
49 if ( is_tax( 'doc_category' ) ) {
50 $_template = 'templates/taxonomy-doc_category';
51 $_default_template = $_template;
52 } elseif ( is_tax( 'doc_tag' ) ) {
53 $_template = 'templates/taxonomy-doc_tag';
54 $_default_template = $_template;
55 }
56
57 $eligible_template = $this->views->path( $_template, $_default_template );
58
59 if ( file_exists( $eligible_template ) ) {
60 $template = &$eligible_template;
61 }
62
63 return apply_filters( 'betterdocs_archives_template', $template, $layout, $_default_template, $this->views );
64 }
65
66 public function single_template( $template ) {
67 if ( ! is_singular( 'docs' ) ) {
68 return $template;
69 }
70
71 $_default_template = 'templates/single/layout-1';
72 $layout = $this->database->get_theme_mod( 'betterdocs_single_layout_select', 'layout-1' );
73 $layout = 'templates/single/' . $layout;
74
75 $eligible_template = $this->views->path( $layout, $_default_template );
76
77 if ( file_exists( $eligible_template ) ) {
78 $template = &$eligible_template;
79 }
80
81 return apply_filters( 'betterdocs_single_template', $template, $layout, $_default_template, $this->views );
82 }
83
84 /**
85 * Summary of is_fse_theme
86 * @return bool
87 *
88 * @suppress PHP0417
89 */
90 private function is_fse_theme() {
91 if ( function_exists( 'wp_is_block_theme' ) ) {
92 return (bool) wp_is_block_theme();
93 }
94 if ( function_exists( 'gutenberg_is_fse_theme' ) ) {
95 return (bool) gutenberg_is_fse_theme();
96 }
97
98 return false;
99 }
100 }
101