PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 3.8.9
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v3.8.9
4.9.2 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 All 200 releases
betterdocs / views / layouts / base.php

base.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 3.8.9, at views/layouts/base.php

176 lines 6.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( $terms_query_args == false ) {
3 return;
4 }
5
6 $terms = get_terms( apply_filters( 'betterdocs_base_terms_args', $terms_query_args ) );
7 /**
8 * Base Layout Before Wrapper
9 */
10 do_action_ref_array( 'betterdocs_base_layout_wrapper_before', [ & $terms ] );
11 ?>
12
13 <div
14 <?php echo $wrapper_attr; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
15 <?php
16 /**
17 * Base Layout Before Inner Wrapper
18 */
19 do_action_ref_array( 'betterdocs_base_layout_inner_wrapper_before', [ & $terms ] );
20 ?>
21 <div
22 <?php echo $inner_wrapper_attr; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
23 <?php
24 $_defined_vars = get_defined_vars();
25 $_params = isset( $_defined_vars['params'] ) ? $_defined_vars['params'] : [];
26
27 $nested_subcategory = isset( $nested_subcategory ) ? $nested_subcategory : false;
28
29 $_current_queried_object_id = null;
30 $_current_queried_object = get_queried_object();
31
32 if ( $_current_queried_object instanceof \WP_Post ) {
33 $_current_terms = get_the_terms( $_current_queried_object->ID, 'doc_category' );
34 $_current_queried_object_id = isset( $_current_terms[0]->term_id ) ? $_current_terms[0]->term_id : null;
35 } elseif ( $_current_queried_object instanceof \WP_Term ) {
36 $_current_queried_object_id = $_current_queried_object->term_id;
37 }
38
39 $ancestors = [];
40
41 if ( is_single() && ! empty( $_current_queried_object_id ) ) {
42 $_category_ids = wp_get_post_terms( get_the_ID(), 'doc_category', [ 'fields' => 'ids' ] );
43 $ancestors = get_ancestors( $_category_ids[0], 'doc_category' );
44 }
45
46 if ( ! is_wp_error( $terms ) ) {
47 do_action_ref_array( 'betterdocs_layout_base_loop_start', [ & $terms, &$_defined_vars ] );
48
49 $_docs_query_args = [
50 'posts_per_page' => isset( $_params['posts_per_page'] ) ? $_params['posts_per_page'] : 0,
51 'multiple_kb' => isset( $_params['multiple_knowledge_base'] ) ? $_params['multiple_knowledge_base'] : false,
52 'kb_slug' => isset( $_params['kb_slug'] ) ? $_params['kb_slug'] : ''
53 ];
54
55 $docs_query_args = ! isset( $docs_query_args ) ? $_docs_query_args : wp_parse_args( $docs_query_args, $_docs_query_args );
56
57 $terms_count = count( $terms );
58 $terms_number = 1;
59 foreach ( $terms as $term ) {
60 $_counts = betterdocs()->query->get_docs_count(
61 $term,
62 $nested_subcategory,
63 [
64 'multiple_knowledge_base' => isset( $_params['multiple_knowledge_base'] ) ? $_params['multiple_knowledge_base'] : false,
65 'kb_slug' => isset( $_params['kb_slug'] ) ? $_params['kb_slug'] : ''
66 ]
67 );
68
69 if ( $_counts <= 0 ) {
70 continue;
71 }
72
73 if ( $widget_type == 'category-box' || ( $widget_type == 'category-grid' && $layout == 'layout-2' ) ) {
74 $_counts = [
75 'counts' => $_counts,
76 'prefix' => ! empty( $count_prefix ) ? $count_prefix : '',
77 'suffix' => ! empty( $count_suffix ) ? $count_suffix : '',
78 'suffix_singular' => ! empty( $count_suffix_singular ) ? $count_suffix_singular : ''
79 ];
80 }
81
82 // Count Sub Terms
83 $sub_terms_count = 0;
84 if ( isset( $_params['taxonomy'] ) && $_params['taxonomy'] == 'doc_category' ) {
85 $sub_terms_count = count( betterdocs()->query->get_all_child_term_ids( $_params['taxonomy'], $term->term_id ) );
86 } elseif ( isset( $_params['taxonomy'] ) && $_params['taxonomy'] == 'knowledge_base' ) {
87 $count_doc_categories = betterdocs()->query->count_doc_categories_for_knowledge_base( $term->slug );
88 $sub_terms_count = $count_doc_categories;
89 }
90
91
92 $permalink = apply_filters(
93 'betterdocs_term_permalink',
94 get_term_link( $term->term_id, $term->taxonomy ),
95 $term,
96 'doc_category',
97 $_params
98 );
99
100 $docs_query_args['term_id'] = $term->term_id;
101 $docs_query_args['term_slug'] = $term->slug;
102 $docs_query_args['nested_subcategory'] = $nested_subcategory;
103
104 $_params = wp_parse_args(
105 [
106 'permalink' => $permalink,
107 'wrapper_class' => [ $layout ],
108 'term' => $term,
109 'counts' => $_counts,
110 'terms_count' => $terms_count,
111 'terms_number' => $terms_number,
112 'sub_terms_count' => $sub_terms_count,
113 'queried_object' => $_current_queried_object,
114 'current_queried_object_id' => $_current_queried_object_id,
115 'ancestors' => $ancestors,
116 'query_args' => betterdocs()->query->docs_query_args( $docs_query_args )
117 ],
118 $_params
119 );
120
121 $template_params = apply_filters( 'betterdocs_template_params', $_params, $layout, $term, $widget_type );
122 $layout_filename = apply_filters( 'betterdocs_layout_filename', $layout, $layout, $widget_type );
123
124 betterdocs()->views->get( 'layouts/' . $widget_type . '/' . $layout_filename, $template_params );
125 ++$terms_number;
126 --$terms_count;
127 }
128
129 do_action_ref_array( 'betterdocs_layout_base_loop_end', [ & $terms, &$_defined_vars ] );
130 } else {
131 betterdocs()->views->get( 'layout-parts/no-content' );
132 }
133
134 wp_reset_postdata();
135 ?>
136 </div>
137 <?php
138 /**
139 * Base Layout After Inner Wrapper
140 */
141 do_action_ref_array( 'betterdocs_base_layout_inner_wrapper_after', [ & $terms ] );
142 ?>
143 <div class="clearfix"></div>
144 <?php if ( isset( $is_edit_mode ) && $is_edit_mode && $widget_type == 'category-grid' ) : ?>
145 <script>
146 /**
147 * TODO: Not working in Elementor Editor on first Load.
148 */
149 jQuery(document).ready(function($) {
150 $('.betterdocs-category-grid').each(function() {
151 let $grid = $(this),
152 $layout_mode = $grid.data('layout-mode'),
153 $column = $grid.data('column'),
154 $column_space = $grid.data('column_space');
155 if ($layout_mode === 'masonry') {
156 let masonryItem = $(".betterdocs-single-category-wrapper", $grid);
157 let total_margin = ($column - 1) * $column_space;
158 masonryItem.css("width", "calc((100% - " + total_margin + "px) / " + parseInt($column) + ")");
159 $grid.masonry({
160 itemSelector: ".betterdocs-single-category-wrapper",
161 percentPosition: true,
162 gutter: $column_space
163 });
164 }
165 });
166 });
167 </script>
168 <?php endif; ?>
169 </div>
170 <?php
171 /**
172 * Base Layout After Wrapper
173 */
174 do_action_ref_array( 'betterdocs_base_layout_wrapper_after', [ & $terms ] );
175 ?>
176