WooCommerce - 从面包屑中删除产品标题但保留所有类别超链接

WooCommerce - Remove product title from breadcrumbs but keep all category hyperlinks

我正在使用以下函数从产品页面上显示的面包屑中删除产品标题:

add_filter( 'woocommerce_get_breadcrumb', 'ed_change_breadcrumb' );

function ed_change_breadcrumb( $breadcrumb ) {
    
  if(is_singular()){
        array_pop($breadcrumb);
    }
  
  return $breadcrumb;
}

它的工作原理是它确实删除了标题,但它也阻止了最后一个 category/sub-category 成为超链接。我该如何解决?

例如:

我需要子类别在从面包屑中删除产品标题后仍然可以点击。

谢谢

您的代码有效,但面包屑中的最后一个元素从未包含 link 通过 global/breadcrumb.php template file on line 34

中使用的代码
  • 可以通过将其复制到 yourtheme/woocommerce/global/breadcrumb.php 来覆盖此模板。

所以你可以删除你的过滤器挂钩并在模板文件中应用以下代码,以便它在[=14=时为最后一个元素提供link ] 是真的

注:is_product() - Returns true on a single product page. Wrapper for is_singular()

替换

if ( ! empty( $breadcrumb ) ) {

    echo $wrap_before;

    foreach ( $breadcrumb as $key => $crumb ) {

        echo $before;

        if ( ! empty( $crumb[1] ) && sizeof( $breadcrumb ) !== $key + 1 ) {
            echo '<a href="' . esc_url( $crumb[1] ) . '">' . esc_html( $crumb[0] ) . '</a>';
        } else {
            echo esc_html( $crumb[0] );
        }

        echo $after;

        if ( sizeof( $breadcrumb ) !== $key + 1 ) {
            echo $delimiter;
        }
    }

    echo $wrap_after;

}

if ( ! empty( $breadcrumb ) ) {

    echo $wrap_before;

    foreach ( $breadcrumb as $key => $crumb ) {

        echo $before;

        if ( ! empty( $crumb[1] ) && sizeof( $breadcrumb ) !== $key + 1 ) {
            echo '<a href="' . esc_url( $crumb[1] ) . '">' . esc_html( $crumb[0] ) . '</a>';
        } else {
            if ( is_product() ) {       
                unset($crumb);
            } else {
                echo esc_html( $crumb[0] );
            }
        }

        echo $after;

        if ( sizeof( $breadcrumb ) !== $key + 1 ) {
            if ( is_product() && sizeof( $breadcrumb ) == $key + 2 ) {
                echo '';
            } else {
                echo $delimiter;
            }
        }
    }

    echo $wrap_after;

}