PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.2.2
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.2.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 3.5.2 All 199 releases
betterdocs / public / betterdocs-breadcrumbs.php

betterdocs-breadcrumbs.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.2.2, at public/betterdocs-breadcrumbs.php

147 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * BetterDocs Breadcrumbs
5 * Since 1.0.0
6 */
7 function betterdocs_get_term_parents_list($term_id, $taxonomy, $separator, $args = array())
8 {
9 $list = '';
10 $term = get_term($term_id, $taxonomy);
11
12 if (is_wp_error($term)) {
13 return $term;
14 }
15
16 if (!$term) {
17 return $list;
18 }
19
20 $term_id = $term->term_id;
21
22 $defaults = array(
23 'format' => 'name',
24 'separator' => $separator,
25 'inclusive' => true,
26 );
27
28 $args = wp_parse_args($args, $defaults);
29
30 foreach (array('inclusive') as $bool) {
31 $args[$bool] = wp_validate_boolean($args[$bool]);
32 }
33
34 $parents = get_ancestors($term_id, $taxonomy);
35
36 if ($args['inclusive']) {
37 array_unshift($parents, $term_id);
38 }
39
40 foreach (array_reverse($parents) as $key => $term_id) {
41 $parent = get_term($term_id, $taxonomy);
42 $name = ('slug' === $args['format']) ? $parent->slug : $parent->name;
43 $term_permalink = get_term_link($parent->term_id, $taxonomy);
44 $term_permalink = apply_filters('betterdocs_breadcrumb_term_permalink', $term_permalink);
45 $list .= '<li class="betterdocs-breadcrumb-item"><a href="' . $term_permalink . '">' . esc_html($name) . '</a></li>';
46 if (next($parents) == true) {
47 $list .= '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter">' . $separator . '</li>';
48 }
49 }
50
51 return $list;
52 }
53
54 function betterdocs_breadcrumbs()
55 {
56 $home_text = BetterDocs_DB::get_settings('breadcrumb_home_text');
57 $home_url = BetterDocs_DB::get_settings('breadcrumb_home_url');
58 $enable_breadcrumb_category = BetterDocs_DB::get_settings('enable_breadcrumb_category');
59 $enable_breadcrumb_title = BetterDocs_DB::get_settings('enable_breadcrumb_title');
60 $builtin_doc_page = BetterDocs_DB::get_settings('builtin_doc_page');
61 $docs_page = BetterDocs_DB::get_settings('docs_page');
62 $taxanomy = BetterDocs_Helper::get_tax();
63 // Settings
64 $delimiter = '<span class="icon-container"><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"><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></svg></span>';
65
66 // Get Docs page
67 $post_type = get_post_type();
68
69 if ($post_type != 'post' && $builtin_doc_page == 1) {
70 $post_type_object = get_post_type_object($post_type);
71 $post_type_archive = get_post_type_archive_link($post_type);
72 $docs_page = '<li class="betterdocs-breadcrumb-item item-cat item-custom-post-type-' . esc_attr($post_type) . '"><a class="bread-cat bread-custom-post-type-' . esc_attr($post_type) . '" href="' . esc_url($post_type_archive) . '" title="' . esc_attr($post_type_object->labels->name) . '">' . stripslashes($post_type_object->labels->name) . '</a></li>';
73 } elseif ($docs_page) {
74 $docs_page_url = get_page_link($docs_page);
75 $docs_page_title = get_the_title($docs_page);
76 $docs_page = '<li class="betterdocs-breadcrumb-item item-cat item-custom-docs-page"><a class="bread-cat bread-custom-docs-page" href="' . esc_url($docs_page_url) . '" title="' . esc_attr($docs_page_title) . '">' . wp_kses($docs_page_title, BETTERDOCS_KSES_ALLOWED_HTML) . '</a></li>';
77 }
78
79 // Get the query & post information
80 global $post;
81
82 // Do not display on the homepage
83 if (!is_front_page()) {
84 echo '<nav id="betterdocs-breadcrumb" class="betterdocs-breadcrumb">';
85 // Build the breadcrums
86 echo '<ul class="betterdocs-breadcrumb-list">';
87
88 // Home page
89 echo '<li class="betterdocs-breadcrumb-item item-home"><a class="bread-link bread-home" href="' . esc_url($home_url) . '" title="' . stripslashes($home_text) . '">' . stripslashes($home_text) . '</a></li>';
90
91 if ($taxanomy == 'doc_category' || is_tax('doc_tag')) {
92 // docs page
93 if ($builtin_doc_page == 1 || $docs_page) {
94 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
95 echo $docs_page;
96 }
97
98 // category
99 if ($enable_breadcrumb_category == 1) {
100 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
101 $query_obj = get_queried_object();
102 $term_id = $query_obj->term_id;
103 $archive_html = betterdocs_get_term_parents_list($term_id, 'doc_category', $delimiter);
104 echo apply_filters('betterdocs_breadcrumb_archive_html', $archive_html, $delimiter);
105 }
106 } else if (is_single()) {
107 // docs page
108 if ($builtin_doc_page == 1 || $docs_page) {
109 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
110 echo $docs_page;
111 }
112
113 // category
114 if ($enable_breadcrumb_category == 1) {
115 $single_html = '';
116 $cat_terms = array();
117
118 if (isset($wp_query->query_vars['doc_category'])) {
119 $term = get_term_by('slug', $wp_query->query_vars['doc_category'], 'doc_category');
120 if (!empty($term)) {
121 $cat_terms[] = $term;
122 }
123 }
124
125 if (empty($cat_terms)) {
126 $cat_terms = wp_get_post_terms($post->ID, 'doc_category');
127 }
128
129 echo apply_filters('betterdocs_breadcrumb_before_single_cat_html', $single_html, $delimiter);
130
131 if ($cat_terms) {
132 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
133 echo betterdocs_get_term_parents_list($cat_terms[0]->term_id, 'doc_category', $delimiter);
134 }
135 }
136
137 // Check if the post is in a category
138 if ($enable_breadcrumb_title == 1) {
139 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
140 echo '<li class="betterdocs-breadcrumb-item item-current item-' . $post->ID . ' current"><span>' . wp_kses(get_the_title(), BETTERDOCS_KSES_ALLOWED_HTML) . '</span></li>';
141 }
142 }
143 echo '</ul>';
144 echo '</nav>';
145 }
146 } // end betterdocs_breadcrumbs()
147