title(),
);
}
// Pages
elseif ( is_page() ){
if ( $post->post_parent ){
$parent_id = $post->post_parent;
$page_parents = array();
while ( $parent_id ){
$get_page = get_page( $parent_id );
$parent_id = $get_page->post_parent;
$page_parents[] = array(
'url' => get_permalink( $get_page->ID ),
'name' => get_the_title( $get_page->ID ),
);
}
$page_parents = array_reverse( $page_parents );
foreach( $page_parents as $single_page ){
$breadcrumbs[] = array(
'url' => $single_page['url'],
'name' => $single_page['name'],
);
}
}
$breadcrumbs[] = array(
'name' => get_the_title(),
);
}
// Attachment
elseif ( is_attachment() ){
if( ! empty( $post->post_parent ) ){
$parent = get_post( $post->post_parent );
$breadcrumbs[] = array(
'url' => get_permalink( $parent ),
'name' => $parent->post_title,
);
}
$breadcrumbs[] = array(
'name' => get_the_title(),
);
}
// Single Posts
elseif ( is_singular() ){
// Single Post
if ( get_post_type() == 'post' ){
$category = tie_get_primary_category_id();
if( ! empty( $category ) ){
$category = get_category( $category );
if( $category->parent !== 0 ){
$parent_categories = array_reverse( get_ancestors( $category->term_id, 'category' ) );
foreach ( $parent_categories as $parent_category ) {
$breadcrumbs[] = array(
'url' => TIELABS_WP_HELPER::get_term_link( $parent_category, 'category' ),
'name' => get_cat_name( $parent_category ),
);
}
}
$breadcrumbs[] = array(
'url' => TIELABS_WP_HELPER::get_term_link( $category->term_id, 'category' ),
'name' => get_cat_name( $category->term_id ),
);
}
}
// Custom Post Type
else{
// Get the main Post type archive link
if( $archive_link = get_post_type_archive_link( get_post_type() ) ){
$post_type = get_post_type_object( get_post_type() );
$breadcrumbs[] = array(
'url' => $archive_link,
'name' => $post_type->labels->singular_name,
);
}
// Get custom Post Types taxonomies
$taxonomies = get_object_taxonomies( $post, 'objects' );
if( ! empty( $taxonomies ) && is_array( $taxonomies ) ){
foreach( $taxonomies as $taxonomy ){
if( $taxonomy->hierarchical ){
$taxonomy_name = $taxonomy->name;
break;
}
}
}
if( ! empty( $taxonomy_name ) ){
$custom_terms = get_the_terms( $post, $taxonomy_name );
if( ! empty( $custom_terms ) && ! is_wp_error( $custom_terms ) ) {
foreach ( $custom_terms as $term ){
$breadcrumbs[] = array(
'url' => get_term_link( $term ),
'name' => $term->name,
);
break;
}
}
}
}
$breadcrumbs[] = array(
'name' => get_the_title(),
);
}
elseif( is_archive() ){
$breadcrumbs[] = array(
'name' => get_the_archive_title(),
);
}
// Print the BreadCrumb
if( ! empty( $breadcrumbs ) ){
$counter = 0;
$item_list_elements = array();
$breadcrumbs_schema = array(
'@context' => 'http://schema.org',
'@type' => 'BreadcrumbList',
'@id' => '#Breadcrumb',
);
echo '';
if( tie_get_option( 'structure_data' ) ){
// To remove the latest current element
$latest_element = array_pop( $item_list_elements );
if( ! empty( $item_list_elements ) && is_array( $item_list_elements ) ){
$breadcrumbs_schema['itemListElement'] = $item_list_elements;
echo '';
}
}
}
}
wp_reset_postdata();
}
}