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

142 lines 6.1 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
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 ( ! empty( $wrapper_attr_array ) && isset( $widget_type ) && $widget_type === 'betterdocs-breadcrumb' ) {
95 $wrapper_attr_array['class'][] = 'betterdocs-breadcrumb';
96 $wrapper_attr_array['id'][] = 'betterdocs-breadcrumb';
97 } else {
98 $wrapper_attr_array = $_wrapper_attr_array;
99 }
100
101 if ( $widget instanceof \WPDeveloper\BetterDocs\Editors\BlockEditor\Block ) {
102 $wrapper_attr_array['class'][] = $blockId;
103 }
104
105 $wrapper_attr = betterdocs()->template_helper->get_html_attributes( $wrapper_attr_array );
106 ?>
107
108 <nav
109 <?php echo $wrapper_attr; ?>>
110 <ul class="betterdocs-breadcrumb-list">
111 <?php
112 foreach ( $breadcrumbs as $breadcrumb ):
113 $li_classes = ['betterdocs-breadcrumb-item'];
114 $li_classes = ! empty( $breadcrumb['li_classes'] ) ? array_merge( $li_classes, $breadcrumb['li_classes'] ) : $li_classes;
115 ?>
116 <li class="<?php esc_attr_e( implode( ' ', $li_classes ), 'betterdocs' );?>">
117 <?php
118 if ( empty( $breadcrumb['url'] ) ) {
119 echo wp_kses_post( '<span>' . $breadcrumb['text'] . '</span>' );
120 } else {
121 echo wp_kses_post( wp_sprintf(
122 "<a href='%s' class='bread-link' title='%s'>%s</a>",
123 esc_attr( esc_url( $breadcrumb['url'] ) ),
124 esc_attr( stripslashes( $breadcrumb['text'] ) ),
125 $breadcrumb['text']
126 ) );
127 }
128 ?>
129 </li>
130 <?php if ( next( $breadcrumbs ) ): ?>
131 <li class="betterdocs-breadcrumb-item breadcrumb-delimiter">
132 <span class="icon-container">
133 <svg class="breadcrumb-delimiter-icon svg-inline--fa fa-angle-right fa-w-8" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-right" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512">
134 <path fill="currentColor" d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>
135 </svg>
136 </span>
137 </li>
138 <?php endif;?>
139 <?php endforeach;?>
140 </ul>
141 </nav>
142