PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 1.7.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v1.7.3
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 1.7.3, at public/betterdocs-breadcrumbs.php

138 lines 6.0 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 . '">' . $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
64 // Settings
65 $delimiter = '<div class="icon-container"><svg class="breadcrumb-delimiter-icon" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="angle-right" class="svg-inline--fa fa-angle-right fa-w-8" 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><div>';
66
67 // Get Docs page
68 $post_type = get_post_type();
69
70 if ($post_type != 'post' && $builtin_doc_page == 1) {
71 $post_type_object = get_post_type_object($post_type);
72 $post_type_archive = get_post_type_archive_link($post_type);
73 $docs_page = '<li class="betterdocs-breadcrumb-item item-cat item-custom-post-type-' . $post_type . '"><a class="bread-cat bread-custom-post-type-' . $post_type . '" href="' . $post_type_archive . '" title="' . $post_type_object->labels->name . '">' . $post_type_object->labels->name . '</a></li>';
74 } elseif ($docs_page) {
75 $docs_page_url = get_page_link($docs_page);
76 $docs_page_title = get_the_title($docs_page);
77 $docs_page = '<li class="betterdocs-breadcrumb-item item-cat item-custom-docs-page"><a class="bread-cat bread-custom-docs-page" href="' . $docs_page_url . '" title="' . $docs_page_title . '">' . $docs_page_title . '</a></li>';
78 }
79
80 // Get the query & post information
81 global $post;
82
83 // Do not display on the homepage
84 if (!is_front_page()) {
85 echo '<nav id="betterdocs-breadcrumb" class="betterdocs-breadcrumb" xmlns:v="http://rdf.data-vocabulary.org/#">';
86 // Build the breadcrums
87 echo '<ul class="betterdocs-breadcrumb-list">';
88
89 // Home page
90 echo '<li class="betterdocs-breadcrumb-item item-home"><a class="bread-link bread-home" href="' . esc_url($home_url) . '" title="' . $home_text . '">' . $home_text . '</a></li>';
91
92 if ($taxanomy == 'doc_category' || is_tax('doc_tag')) {
93 // docs page
94 if ($builtin_doc_page == 1 || $docs_page) {
95 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
96 echo $docs_page;
97 }
98
99 // category
100 if ($enable_breadcrumb_category == 1) {
101 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
102 $query_obj = get_queried_object();
103 $term_id = $query_obj->term_id;
104 $archive_html = betterdocs_get_term_parents_list($term_id, 'doc_category', $delimiter);
105
106 echo apply_filters('betterdocs_breadcrumb_archive_html', $archive_html, $delimiter);
107 }
108 } else if (is_single()) {
109 // docs page
110 if ($builtin_doc_page == 1 || $docs_page) {
111 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
112 echo $docs_page;
113 }
114
115 // category
116 if ($enable_breadcrumb_category == 1) {
117 $single_html = '';
118 $cat_terms = wp_get_post_terms($post->ID, 'doc_category');
119
120 echo apply_filters('betterdocs_breadcrumb_before_single_cat_html', $single_html, $delimiter);
121
122 if ($cat_terms) {
123 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
124 echo betterdocs_get_term_parents_list($cat_terms[0]->term_id, 'doc_category', $delimiter);
125 }
126 }
127
128 // Check if the post is in a category
129 if ($enable_breadcrumb_title == 1) {
130 echo '<li class="betterdocs-breadcrumb-item breadcrumb-delimiter"> ' . $delimiter . ' </li>';
131 echo '<li class="betterdocs-breadcrumb-item item-current item-' . $post->ID . ' current"><span>' . get_the_title() . '</span></li>';
132 }
133 }
134 echo '</ul>';
135 echo '</nav>';
136 }
137 } // end betterdocs_breadcrumbs()
138