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(); } }