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

问题描述 投票:0回答:2

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

add_filter( 'woocommerce_get_breadcrumb', 'ed_change_breadcrumb' );

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

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

例如:

  • 原始面包屑

    <a>
    首页
    </a>
    /
    <a>
    类别
    </a>
    /
    <a>
    子类别
    </a>
    / 产品标题

  • 上述函数的结果

    <a>
    首页
    </a>
    /
    <a>
    类别
    </a>
    / 子类别

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

谢谢

php wordpress woocommerce breadcrumbs
2个回答
6
投票

您的代码可以工作,但面包屑中的最后一个元素永远不会包含通过第

global/breadcrumb.php
行模板文件中使用的代码的链接 34

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

因此您可以删除过滤器挂钩并在模板文件中应用以下代码,以便在

is_product()
为true时提供指向最后一个元素的链接

注意:

is_product()
- 在单个产品页面上返回 true。
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;

}

0
投票

保留 woocommerce 类别链接您可以使用此代码,添加到子主题功能,这将保留类别链接

© www.soinside.com 2019 - 2024. All rights reserved.