PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.2.0
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.2.0
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 / views / widgets / breadcrumbs.php

breadcrumbs.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.2.0, at views/widgets/breadcrumbs.php

150 lines 5.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( is_front_page() ) {
3 return;
4 }
5 $breadcrumbs_layout = isset( $breadcrumbs_layout ) ? $breadcrumbs_layout : 'layout-1';
6 $home_text = betterdocs()->settings->get( 'breadcrumb_home_text', 'Home' );
7 $home_url = betterdocs()->settings->get( 'breadcrumb_home_url' );
8 $enable_breadcrumb_category = betterdocs()->settings->get( 'enable_breadcrumb_category' );
9 $enable_breadcrumb_title = betterdocs()->settings->get( 'enable_breadcrumb_title' );
10 $builtin_doc_page = betterdocs()->settings->get( 'builtin_doc_page', true );
11 $docs_page = betterdocs()->settings->get( 'docs_page' );
12 $taxanomy = betterdocs()->query->get_taxonomy();
13 $post_type = 'docs';
14 $docs_page_title = __( 'Docs', 'betterdocs' );
15 $li_classes = [ 'item-cat', 'item-custom-post-type-docs' ];
16 $enable_breadcrumb_home_text = betterdocs()->settings->get('enable_breadcrumb_home_text', true);
17
18 if ( $builtin_doc_page || ( ! $builtin_doc_page && $docs_page <= 0 ) ) {
19 $post_type_object = get_post_type_object( $post_type );
20 $li_classes = [ 'item-cat', 'item-custom-post-type-' . esc_attr( $post_type ) ];
21
22 $docs_page_url = get_post_type_archive_link( $post_type );
23 $docs_page_title = $post_type_object->labels->name;
24 } elseif ( $docs_page ) {
25 $li_classes = [ 'item-cat item-custom-docs-page' ];
26 $docs_page_url = get_page_link( $docs_page );
27 $docs_page_title = get_the_title( $docs_page );
28 }
29
30 $breadcrumbs = [
31 [
32 'li_classes' => [ 'item-home' ],
33 'url' => $home_url,
34 'text' => stripslashes( $home_text )
35 ],
36 [
37 'li_classes' => $li_classes,
38 'url' => $docs_page_url,
39 'text' => $docs_page_title
40 ]
41 ];
42
43 if( ! $enable_breadcrumb_home_text ) {
44 unset($breadcrumbs[0]);
45 }
46
47 $breadcrumbs = apply_filters( 'betterdocs_breadcrumb_before_archives', $breadcrumbs );
48 if ( $taxanomy == 'doc_category' || is_tax( 'doc_tag' ) ) {
49 if ( $enable_breadcrumb_category ) {
50 $query_obj = get_queried_object();
51 $term_id = $query_obj->term_id;
52
53 $term_parents = betterdocs()->query->get_term_parents( $term_id );
54 $breadcrumbs = apply_filters( 'betterdocs_breadcrumb_after_archives', array_merge( $breadcrumbs, $term_parents ) );
55 }
56 } elseif ( is_single() ) {
57 global $wp_query, $post;
58
59 if ( $enable_breadcrumb_category ) {
60 $cat_terms = [];
61 if ( isset( $wp_query->query_vars['doc_category'] ) ) {
62 $term = get_term_by( 'slug', $wp_query->query_vars['doc_category'], 'doc_category' );
63 if ( ! empty( $term ) ) {
64 $cat_terms[] = $term;
65 }
66 }
67
68 if ( empty( $cat_terms ) ) {
69 $cat_terms = wp_get_post_terms( $post->ID, 'doc_category' );
70 }
71
72 $breadcrumbs = apply_filters( 'betterdocs_breadcrumb_before_single_category', $breadcrumbs );
73
74 if ( $cat_terms ) {
75 $term_parents = betterdocs()->query->get_term_parents( $cat_terms[0]->term_id );
76 $breadcrumbs = array_merge( $breadcrumbs, $term_parents );
77 }
78 }
79
80 // Check if the post is in a category
81 if ( $enable_breadcrumb_title ) {
82 $breadcrumbs[] = [
83 'li_classes' => [ 'item-current', 'item-' . ( $post->ID != null ? $post->ID : '' ), 'current' ],
84 'url' => '',
85 'text' => betterdocs()->template_helper->kses( get_the_title() )
86 ];
87 }
88 }
89
90 if ( empty( $breadcrumbs ) ) {
91 return;
92 }
93
94 $_wrapper_attr_array = [
95 'class' => [ 'betterdocs-breadcrumb' ],
96 'id' => [ 'betterdocs-breadcrumb' ]
97 ];
98
99 if ( isset( $breadcrumbs_layout ) && ! empty( $breadcrumbs_layout ) ) {
100 $br_wrapper_attr_array['class'][] = 'betterdocs-breadcrumb ' . $breadcrumbs_layout;
101 $br_wrapper_attr_array['id'][] = 'betterdocs-breadcrumb';
102 } else {
103 $br_wrapper_attr_array = $_wrapper_attr_array;
104 }
105
106
107 if ( isset( $widget ) && $widget instanceof \WPDeveloper\BetterDocs\Editors\BlockEditor\Block ) {
108 $br_wrapper_attr_array['class'][] = $blockId;
109 }
110
111 $wrapper_attr = betterdocs()->template_helper->get_html_attributes( $br_wrapper_attr_array );
112 ?>
113
114 <nav
115 <?php echo $wrapper_attr; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
116 <ul class="betterdocs-breadcrumb-list">
117 <?php
118 foreach ( $breadcrumbs as $breadcrumb ) :
119 $li_classes = [ 'betterdocs-breadcrumb-item' ];
120 $li_classes = ! empty( $breadcrumb['li_classes'] ) ? array_merge( $li_classes, $breadcrumb['li_classes'] ) : $li_classes;
121 ?>
122 <li class="<?php echo implode( ' ', $li_classes ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>">
123 <?php
124 if ( empty( $breadcrumb['url'] ) ) {
125 echo wp_kses_post( '<span>' . $breadcrumb['text'] . '</span>' );
126 } else {
127 echo wp_kses_post(
128 wp_sprintf(
129 "<a href='%s' class='bread-link' title='%s'>%s</a>",
130 esc_attr( esc_url( $breadcrumb['url'] ) ),
131 esc_attr( stripslashes( $breadcrumb['text'] ) ),
132 $breadcrumb['text']
133 )
134 );
135 }
136 ?>
137 </li>
138 <?php
139 if ( next( $breadcrumbs ) ) :
140 if ( $breadcrumbs_layout == 'layout-2' || $breadcrumbs_layout == 'layout-3' ) {
141 $view_object->get( 'template-parts/breadcrumb-delimiter-2' );
142 } else {
143 $view_object->get( 'template-parts/breadcrumb-delimiter-1' );
144 }
145 endif;
146 ?>
147 <?php endforeach; ?>
148 </ul>
149 </nav>
150