博文中心

WordPress SEO 更加完美的面包屑导航

作者: 分类: 发布于:2017.09.15

什么?你的面包屑导航,尽然不能支持自定义文本文档和自定义分类!果断换成小骨头的【完美版】,啥都不是事儿。


别犹豫,在主题的 functions.php 文件下加入以下代码:

function the_crumbs() {
$delimiter = '<span class="c-999 en"> &gt;</span>'; // 分隔符
$before = ''; // 在 当前页 前 插入
$after = ''; // 在 当前页 后 插入
if ( !is_home() && !is_front_page() || is_paged() ) {
echo '<nav class="crumbs breadcrumb" >';
global $post;
$homeLink = home_url();
echo ' <i class="Hui-iconfont">&#xe67f;</i>&nbsp;<a title="返回首页" href="' . $homeLink . '">首页</a> ' . $delimiter . ' ';
if ( is_single() && !is_page() && get_post_type() != 'post' ) { // 自定义文章类型
$post_type = get_post_type_object( get_post_type() );
$slug = $post_type->rewrite;
echo '<a href="' . $homeLink . '/' . $slug[ 'slug' ] . '/">' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' '; //自定义文本存档 总归档 写法 2
foreach ( get_the_taxonomies() as $taxonomy_name => $taxonomy ) {
/*echo $taxonomy_name;*/
if ( $taxonomy_name != 'post_tag' ) {
$terms = get_the_terms( $post->ID, $taxonomy_name );
$term = $terms[ 0 ];
$parentTerm = get_term( $term->parent, $taxonomy_name );
if ( $term->parent != 0 ) {
$parentTerm_name = $parentTerm->name;
$parentTerm_link = get_term_link( $parentTerm->term_id, $taxonomy_name );
echo '<a href="' . esc_url( $parentTerm_link ) . '">' . $parentTerm_name . '</a> ' . $delimiter . ' ';
}
echo '<a href="' . esc_url( get_term_link( $term->term_id, $taxonomy_name ) ) . '">' . $term->name . '</a> ' . $delimiter . ' ';
}
/* print_r ($term);*/
}
echo $before . get_the_title() . $after;
}
elseif ( is_single() && !is_attachment() ) { // 文章
$cat = get_the_category();
$cat = $cat[ 0 ];
$cat_code = get_category_parents( $cat, TRUE, ' ' . $delimiter . ' ' );
echo $cat_code = str_replace( '<a', '<a itemprop="breadcrumb"', $cat_code );
echo $before . get_the_title() . $after;
}
elseif ( is_attachment() ) { // 附件
$parent = get_post( $post->post_parent );
$cat = get_the_category( $parent->ID );
$cat = $cat[ 0 ];
echo '<a href="' . get_permalink( $parent ) . '">' . $parent->post_title . '</a> ' . $delimiter . ' ';
echo $before . get_the_title() . $after;
}
elseif ( is_page() && !$post->post_parent ) { // 页面
echo $before . get_the_title() . $after;
}
elseif ( is_page() && $post->post_parent ) { // 父级页面
$parent_id = $post->post_parent;
$breadcrumbs = array();
while ( $parent_id ) {
$page = get_page( $parent_id );
$breadcrumbs[] = '<a href="' . get_permalink( $page->ID ) . '">' . get_the_title( $page->ID ) . '</a>';
$parent_id = $page->post_parent;
}
$breadcrumbs = array_reverse( $breadcrumbs );
foreach ( $breadcrumbs as $crumb )echo $crumb . ' ' . $delimiter . ' ';
echo $before . get_the_title() . $after;
}
elseif ( is_post_type_archive() ) { // 自定义文章类型 存档
$post_type = get_query_var( 'post_type' );
if ( is_array( $post_type ) ) {
$post_type = reset( $post_type );
}
$post_type_object = get_post_type_object( $post_type );
if ( !$post_type_object->has_archive ) {
echo $before . '' . post_type_archive_title( '', false ) . '' . $after;
}
elseif ( $post_type_object->has_archive ) {
echo $before . '' . post_type_archive_title( '', false ) . '' . $after;
}
}
elseif ( is_category() ) { // 分类 存档
global $wp_query;
$cat_obj = $wp_query->get_queried_object();
$thisCat = $cat_obj->term_id;
$thisCat = get_category( $thisCat );
$parentCat = get_category( $thisCat->parent );
if ( $thisCat->parent != 0 ) {
$cat_code = get_category_parents( $parentCat, TRUE, ' ' . $delimiter . ' ' );
echo $cat_code = str_replace( '<a', '<a itemprop="breadcrumb"', $cat_code );
}
echo $before . '' . single_cat_title( '', false ) . '' . $after;
}
elseif ( is_tag() ) { //标签 存档
echo $before;
printf( '关于 %s 的所有文章', single_tag_title( '', false ) );
echo $after;
}
elseif ( is_tax() ) { // 自定义分类 存档
echo ' <a href="' . get_post_type_archive_link( get_post_type() ) . '">' . get_post_type_object( get_post_type() )->labels->singular_name . '</a>' . $delimiter . ' '; //自定义文本存档 总归档 写法 1
global $wp_query;
$tax_obj = $wp_query->get_queried_object();
$thisTax = $tax_obj->term_id;
$thisTaxonomy = $tax_obj->taxonomy;
$thisTax = get_term( $thisTax, $thisTaxonomy );
$parentTax = get_term( $thisTax->parent, $thisTaxonomy );
if ( $thisTax->parent != 0 ) {
$tax_code = get_term_parents_list( $parentTax, $thisTaxonomy, array( 'separator' => $delimiter ) );
echo $tax_code = str_replace( '<a', '<a itemprop="breadcrumb"', $tax_code );
}
echo $before . '' . single_term_title( '', false ) . '' . $after;
}
elseif ( is_author() && !is_post_type_archive() ) { // 作者存档
global $author;
$userdata = get_userdata( $author );
echo $before;
printf( '来自 %s 所有的文章', $userdata->display_name );
echo $after;
}
elseif ( is_day() ) { // 天 存档
echo '<a href="' . get_year_link( get_the_time( 'Y' ) ) . '">' . get_the_time( 'Y' ) . '</a> ' . $delimiter . ' ';
echo '<a href="' . get_month_link( get_the_time( 'Y' ), get_the_time( 'm' ) ) . '">' . get_the_time( 'F' ) . '</a> ' . $delimiter . ' ';
echo $before . get_the_time( 'd' ) . $after;
}
elseif ( is_month() ) { // 月 存档
echo '<a href="' . get_year_link( get_the_time( 'Y' ) ) . '">' . get_the_time( 'Y' ) . '</a> ' . $delimiter . ' ';
echo $before . get_the_time( 'F' ) . $after;
}
elseif ( is_year() ) { // 年 存档
echo $before . get_the_time( 'Y' ) . $after;
}
elseif ( is_search() ) { // 搜索结果
echo $before;
printf( '您是在搜索 %s 吗?', get_search_query() );
echo $after;
}
elseif ( is_404() ) { // 404 页面
echo $before . '亲,你迷路了!' . $after;
}
elseif ( !is_single() && !is_page() && get_post_type() != 'post' ) {
$post_type = get_post_type_object( get_post_type() );
echo $before . $post_type->labels->singular_name . $after;
}
if ( get_query_var( 'paged' ) ) { // 分页
if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() )
echo sprintf( '(第 %s 页)', get_query_var( 'paged' ) );
}
echo '</nav>';
}
}

然后在网页需要的地方加:

<?php the_crumbs(); ?>
2 抢沙发
我要评论