首页 文章

WordPress - 如何在商店类别页面上修复WooCommerce面包屑?

提问于
浏览
1

在WooCommerce>设置>产品中,我已将"Shop Page Display"设置为"Show subcategories" - 因此在我的主要商店页面(http://example.com/shop/)上仅显示类别(并且没有单独的产品) .

我还使用this code snippet使产品类别显示在我的面包屑中,因为我的主题使用WooTheme的"Simplicity"主题作为其父级 .

我遇到的问题是面包屑没有正确显示 . 商店主页上的面包屑看起来很好......您现在的位置:首页>产品展示

但是,当我点击该页面上的某个类别时,面包屑会变为......您现在的位置:首页>巧克力

...真的应该......你在这里:首页>产品>巧克力

为了确认问题,当我点击产品时,面包屑再次看起来很好......您现在的位置:首页>产品>巧克力>素食巧克力棒

有谁知道如何在类别页面上修复有问题的面包屑?

由于这似乎是一个错误,我已经向WooCommerce寻求他们的支持,但他们不愿意修复它 .

提前致谢 .

2 回答

  • 1

    将其添加到funtions.php文件中

    // Breadcrumbs Display Category Name
    // ====================================================================
    
    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>';
    
        }
    }
    
  • 0

    } elseif ( x_is_product() ) { 开始并在 } elseif ( x_is_buddypress() ) { 结束

    } elseif ( x_is_product() ) {
    
    $product_categories = wp_get_post_terms( get_the_ID(), 'product_cat' );
    $parent = '';
    $sub_category = '';
    
    foreach ($product_categories as $category ) {
    $term_id = $category->term_id;
    $term_name = get_term( $term_id, 'product_cat' );
    
     if ( $category->parent != 0 ) {
      $sub_category .= $parent_id . '<a href="'.home_url().'/product-category/'.$term_name->slug.'/">' . $term_name->name . '</a>' . $delimiter ;
     } else {
       $parent .= '<a href="'.home_url().'/product-category/'.$term_name->slug.'/">' . $term_name->name . '</a>' . $delimiter ;
     }
    }
    
    if ( $v = get_breadcrumb_category('product_cat') ) {
           $product_category = $delimiter . $v;
         } else {
           $product_category = '';
         }
    
      if ( $is_ltr ) {
    if(is_array($product_categories)){                               
        echo $shop_link . $product_category . $delimiter . $sub_category . $current_before . $page_title . $current_after;                
    }
    else {
        echo $shop_link . $delimiter . $current_before . $page_title . $current_after;
    }            
     } else {
      echo $current_before . $page_title . $current_after . $delimiter . $shop_link;
    }
    
    } elseif ( x_is_buddypress() ) {
    

相关问题