Woocommerce 面包屑不显示完整路径

Woocommerce Breadcrumbs not displaying full path

正在处理具有许多类别/子类别/子子猫等的 woocommerce 购物车。

面包屑导航默认只显示主页,无论您在哪个页面……有点愚蠢。

所以如果我导航 home/catalog/cat1/subcat1/product。面包屑仅显示; home/catalog/product...如果您不能向后导航,面包屑有什么意义?

还有其他人 运行 遇到过这个问题吗?非常感谢。

如果其他人正在寻找,将其放入 fuctions.php 会有所帮助。

// 面包屑显示类别名称 // ================================================ =============================

function get_breadcrumb_category( $cat ) {
$post = get_post( $post->ID );
$post_type = $post->post_type;
$taxonomy = $cat;

$f_categories = wp_get_post_terms( $post->ID, $taxonomy );
$f_category = $f_categories[0];

if ( $f_category->parent != 0 ) {
   $f_category_id    = $f_category->parent;
   $parent_array     = get_term_by('id', $f_category_id, $taxonomy, 'ARRAY_A');
   $f_category_name  = $parent_array["name"];
   $term_link        = get_term_link( $f_category_id, $taxonomy );
} else {
    $f_category_id    = $f_category->term_id;
    $f_category_name  = $f_category->name;
    $term_link        = get_term_link( $f_category_id, $taxonomy );
}

if ( $f_categories && ! is_wp_error($f_categories) ) {
  return '<a href="' . $term_link . '">' . $f_category_name . '</a>';
 }  else {
  return '';
   }
}

function x_breadcrumbs() {

if ( x_get_option( 'x_breadcrumb_display', '1' ) ) {

  GLOBAL $post;

  $is_ltr         = ! is_rtl();
  $stack          = x_get_stack();
  $delimiter      = x_get_breadcrumb_delimiter();
  $home_text      = x_get_breadcrumb_home_text();
  $home_link      = home_url();
  $current_before = x_get_breadcrumb_current_before();
  $current_after  = x_get_breadcrumb_current_after();
  $page_title     = get_the_title();
  $blog_title     = get_the_title( get_option( 'page_for_posts', true ) );
  $post_parent    = $post->post_parent;

  if ( X_WOOCOMMERCE_IS_ACTIVE ) {
    $shop_url   = x_get_shop_link();
    $shop_title = x_get_option( 'x_' . $stack . '_shop_title', __( 'The Shop', '__x__' ) );
    $shop_link  = '<a href="'. $shop_url .'">' . $shop_title . '</a>';
  }

  echo '<div class="x-breadcrumbs"><a href="' . $home_link . '">' . $home_text . '</a>' . $delimiter;

    if ( is_home() ) {

      echo $current_before . $blog_title . $current_after;

    } elseif ( is_category() ) {

      $the_cat = get_category( get_query_var( 'cat' ), false );
      if ( $the_cat->parent != 0 ) echo '<a href="'.get_permalink(102).'">'.get_the_title(102) .'</a>';
      echo $current_before . single_cat_title( '', false ) . $current_after;

    } elseif ( x_is_product_category() ) {

      if ( $is_ltr ) {
        echo $shop_link . $delimiter . $current_before . single_cat_title( '', false ) . $current_after;
      } else {
        echo $current_before . single_cat_title( '', false ) . $current_after . $delimiter . $shop_link;
      }

    } elseif ( x_is_product_tag() ) {

      if ( $is_ltr ) {
        echo $shop_link . $delimiter . $current_before . single_tag_title( '', false ) . $current_after;
      } else {
        echo $current_before . single_tag_title( '', false ) . $current_after . $delimiter . $shop_link;
      }

    } elseif ( is_search() ) {

      echo $current_before . __( 'Search Results for ', '__x__' ) . '“' . get_search_query() . '”' . $current_after;

    } elseif ( is_singular( 'post' ) ) {

      if ( get_option( 'page_for_posts' ) == is_front_page() ) {
        echo $current_before . $page_title . $current_after;
      } else {
        if ( $is_ltr ) {

          $f_category = get_the_category();

          if ( $f_category[0]->parent != 0 ) {
             $f_category_id = $f_category[0]->parent;
             $f_category_name = get_cat_name( $f_category_id );
          } else {
             $f_category_id = $f_category[0]->term_id;
             $f_category_name = $f_category[0]->name;
          }

          echo '<a href="' . get_category_link( $f_category_id ) . '">' . $f_category_name . '</a>' . $delimiter . $current_before . $page_title . $current_after;
        } else {
          echo $current_before . $page_title . $current_after . $delimiter . '<a href="' . get_permalink( get_option( 'page_for_posts' ) ) . '">' . $blog_title . '</a>';
        }
      }

    } elseif ( x_is_portfolio() ) {

      echo $current_before . get_the_title() . $current_after;

    } elseif ( x_is_portfolio_item() ) {

      $link  = x_get_parent_portfolio_link();
      $title = x_get_parent_portfolio_title();

      if ( $v = get_breadcrumb_category('portfolio-category') ) {
        $portfolio_category = $delimiter . $v;
      } else {
        $portfolio_category = '';
      }

      if ( $is_ltr ) {
        echo '<a href="' . $link . '">' . $title . '</a>' . $portfolio_category . $delimiter . $current_before . $page_title . $current_after;
      } else {
        echo $current_before . $page_title . $current_after . $portfolio_category . $delimiter . '<a href="' . $link . '">' . $title . '</a>';
      }

    } elseif ( x_is_product() ) {

     if ( $v = get_breadcrumb_category('product_cat') ) {
       $product_category = $delimiter . $v;
     } else {
       $product_category = '';
     }

      if ( $is_ltr ) {
        echo $shop_link . $product_category . $delimiter . $current_before . $page_title . $current_after;
      } else {
        echo $current_before . $page_title . $current_after . $product_category . $delimiter . $shop_link;
      }

    } elseif ( x_is_buddypress() ) {

      if ( bp_is_group() ) {
        echo '<a href="' . bp_get_groups_directory_permalink() . '">' . x_get_option( 'x_buddypress_groups_title', __( 'Groups', '__x__' ) ) . '</a>' . $delimiter . $current_before . x_buddypress_get_the_title() . $current_after;
      } elseif ( bp_is_user() ) {
        echo '<a href="' . bp_get_members_directory_permalink() . '">' . x_get_option( 'x_buddypress_members_title', __( 'Members', '__x__' ) ) . '</a>' . $delimiter . $current_before . x_buddypress_get_the_title() . $current_after;
      } else {
        echo $current_before . x_buddypress_get_the_title() . $current_after;
      }

    } elseif ( x_is_bbpress() ) {

      remove_filter( 'bbp_no_breadcrumb', '__return_true' );

      if ( bbp_is_forum_archive() ) {
        echo $current_before . bbp_get_forum_archive_title() . $current_after;
      } else {
        echo bbp_get_breadcrumb();
      }

      add_filter( 'bbp_no_breadcrumb', '__return_true' );

    } elseif ( is_page() && ! $post_parent ) {

      echo $current_before . $page_title . $current_after;

    } elseif ( is_page() && $post_parent ) {

      $parent_id   = $post_parent;
      $breadcrumbs = array();

      if ( is_rtl() ) {
        echo $current_before . $page_title . $current_after . $delimiter;
      }

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

      if ( $is_ltr ) {
        $breadcrumbs = array_reverse( $breadcrumbs );
      }

      for ( $i = 0; $i < count( $breadcrumbs ); $i++ ) {
        echo $breadcrumbs[$i];
        if ( $i != count( $breadcrumbs ) -1 ) echo $delimiter;
      }

      if ( $is_ltr ) {
        echo $delimiter . $current_before . $page_title . $current_after;
      }

    } elseif ( is_tag() ) {

      echo $current_before . single_tag_title( '', false ) . $current_after;

    } elseif ( is_author() ) {

      GLOBAL $author;
      $userdata = get_userdata( $author );
      echo $current_before . __( 'Posts by ', '__x__' ) . '“' . $userdata->display_name . $current_after . '”';

    } elseif ( is_404() ) {

      echo $current_before . __( '404 (Page Not Found)', '__x__' ) . $current_after;

    } elseif ( is_archive() ) {

      if ( x_is_shop() ) {
        echo $current_before . $shop_title . $current_after;
      } else {
        echo $current_before . __( 'Archives ', '__x__' ) . $current_after;
      }

    }

  echo '</div>';

}

}