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

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