| 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 echo implode( ' ', $li_classes );?>"> |
| 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 |
|