'http://schema.org',
'@type' => 'BreadcrumbList',
);
function __construct() {
add_action( 'wp_head', array( $this, 'json_ld_breadcrumbs' ) );
}
function my_music_band_custom_breadcrumbs_json_ld( $show_on_home ) {
/* === OPTIONS === */
$text['home'] = __( 'Home', 'my-music-band' ); // text for the 'Home' link
$text['category'] = __( 'Archive for ', 'my-music-band' ); // text for a category page
$text['search'] = __( 'Search results for: ', 'my-music-band' ); // text for a search results page
$text['tag'] = __( 'Posts tagged ', 'my-music-band' ); // text for a tag page
$text['author'] = __( 'View all posts by ', 'my-music-band' ); // text for an author page
$text['404'] = __( 'Error 404', 'my-music-band' ); // text for the 404 page
$show_current = 1; // 1 - show current post/page title in breadcrumbs, 0 - don't show
$before = ''; // tag before the current crumb
$after = ''; // tag after the current crumb
/* === END OF OPTIONS === */
global $post, $paged, $page;
$home_link = home_url( '/' );
if ( is_front_page() ) {
if ( $show_on_home ) {
$this->breadcrumb_list[] = $this->add_crumbs( $text['home'], esc_url( $home_link ) );
}
} else {
$this->breadcrumb_list[] = $this->add_crumbs( $text['home'], esc_url( $home_link ) );
if ( is_home() ) {
if ( 1 == $show_current ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_title( get_option( 'page_for_posts', true ) ), esc_url( $home_link ) );
}
} elseif ( is_category() ) {
$cat = get_category( get_query_var( 'cat' ), false );
if ( 0 != $cat->parent ) {
$parents = get_ancestors( $cat->term_id, 'category' );
$parents = array_reverse( $parents );
foreach ( $parents as $parent ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_cat_name( $parent ), get_category_link( $parent ) );
}
}
$this->breadcrumb_list[] = $this->add_crumbs( $text['category'] . get_the_archive_title() );
} elseif ( is_search() ) {
$this->breadcrumb_list[] = $this->add_crumbs( $text['search'] . get_search_query() );
} elseif ( is_day() ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_time( 'Y' ), get_year_link( get_the_time( 'Y' ) ) );
$this->breadcrumb_list[] = $this->add_crumbs( get_the_time( 'F' ), get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) ) );
$this->breadcrumb_list[] = $this->add_crumbs( get_the_time( 'd' ) );
} elseif ( is_month() ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_time( 'Y' ), get_year_link( get_the_time( 'Y' ) ) );
$this->breadcrumb_list[] = $this->add_crumbs( get_the_time( 'F' ) );
} elseif ( is_year() ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_time( 'Y' ) );
} elseif ( is_single() && ! is_attachment() ) {
if ( get_post_type() != 'post' ) {
$post_type = get_post_type_object( get_post_type() );
$post_link = get_post_type_archive_link( $post_type->name );
$this->breadcrumb_list[] = $this->add_crumbs( $post_type->labels->singular_name, $post_link );
if ( 1 == $show_current ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_title() );
}
} else {
$cat = get_the_category();
$cat = $cat[0];
$parents = get_ancestors( $cat->term_id, 'category' );
$parents = array_reverse( $parents );
foreach ( $parents as $parent ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_cat_name( $parent ), get_category_link( $parent ) );
}
$this->breadcrumb_list[] = $this->add_crumbs( $cat->name, get_category_link( $cat->term_id ) );
if ( 1 == $show_current ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_title() );
}
}
} elseif ( ! is_single() && ! is_page() && get_post_type() != 'post' && ! is_404() ) {
$post_type = get_post_type_object( get_post_type() );
isset( $post_type->labels->singular_name ) ? $this->breadcrumb_list[] = $this->add_crumbs( $post_type->labels->singular_name )
: '';
} elseif ( is_attachment() ) {
$parent = get_post( $post->post_parent );
$cat = get_the_category( $parent->ID );
if ( isset( $cat[0] ) ) {
$cat = $cat[0];
}
if ( $cat ) {
$parents = get_ancestors( $cat->term_id, 'category' );
$parents = array_reverse( $parents );
foreach ( $parents as $parent ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_cat_name( $parent ), get_category_link( $parent ) );
}
}
$this->breadcrumb_list[] = $this->add_crumbs( $parent->post_title, get_permalink( $parent ) );
if ( 1 == $show_current ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_title() );
}
} elseif ( is_page() && ! $post->post_parent ) {
if ( 1 == $show_current ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_title() );
}
} elseif ( is_page() && $post->post_parent ) {
$parent_id = $post->post_parent;
$breadcrumbs = array();
while ( $parent_id ) {
$page_child = get_post( $parent_id );
$breadcrumbs_link[] = get_permalink( $page_child->ID );
$breadcrumbs_name[] = get_the_title( $page_child->ID );
$parent_id = $page_child->post_parent;
}
$breadcrumbs = array_reverse( $breadcrumbs );
for ( $i = 0; $i < count( $breadcrumbs ); $i++ ) {
$this->breadcrumb_list[] = $this->add_crumbs( $breadcrumbs_name[ $i ], $breadcrumbs_link[ $i ] );
}
if ( 1 == $show_current ) {
$this->breadcrumb_list[] = $this->add_crumbs( get_the_title() );
}
} elseif ( is_tag() ) {
$this->breadcrumb_list[] = $this->add_crumbs( $text['tag'] . get_the_archive_title() );
} elseif ( is_author() ) {
global $author;
$userdata = get_userdata( $author );
$this->breadcrumb_list[] = $this->add_crumbs( $text['author'] . $userdata->display_name );
} elseif ( is_404() ) {
$this->breadcrumb_list[] = $this->add_crumbs( $text['404'] );
}
}
$this->breadcrumb['itemListElement'] = $this->breadcrumb_list;
return $this->breadcrumb;
} // end my_music_band_breadcrumb_lists
function add_crumbs( $name, $url = '' ) {
$this->position = $this->position + 1;
if ( '' !== $url ) {
$item['@id'] = $url;
}
$item['name'] = $name;
$data = array(
'@type' => 'ListItem',
'position' => $this->position,
'item' => $item,
);
return $data;
}
function json_ld_breadcrumbs() {
if ( get_theme_mod( 'my_music_band_breadcrumb_option', 1 ) ) {
$show_on_home = 1;
$breadcrumb = $this->my_music_band_custom_breadcrumbs_json_ld( $show_on_home );
$json = '';
$json .= '';
if ( '1' == $show_on_home && ( is_home() || is_front_page() ) ) {
echo $json;
} elseif ( '1' != $show_on_home && is_front_page() && ! is_home() ) {
} elseif ( '1' != $show_on_home && is_front_page() && is_home() ) {
} else {
echo $json;
}
}
}
}
new My_Music_Band_Json_Ld_Schema();
}