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 成为超链接。我该如何解决?
例如:
原始面包屑
<a>
首页</a>
/ <a>
类别</a>
/ <a>
子类别</a>
/ 产品标题
上述函数的结果
<a>
主页</a>
/ <a>
类别</a>
/ 子类别
我需要子类别在从面包屑中删除产品标题后仍然可以点击。
谢谢
您的代码有效,但面包屑中的最后一个元素从未包含 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;
}
我正在使用以下函数从产品页面上显示的面包屑中删除产品标题:
add_filter( 'woocommerce_get_breadcrumb', 'ed_change_breadcrumb' );
function ed_change_breadcrumb( $breadcrumb ) {
if(is_singular()){
array_pop($breadcrumb);
}
return $breadcrumb;
}
它的工作原理是它确实删除了标题,但它也阻止了最后一个 category/sub-category 成为超链接。我该如何解决?
例如:
原始面包屑
<a>
首页</a>
/<a>
类别</a>
/<a>
子类别</a>
/ 产品标题上述函数的结果
<a>
主页</a>
/<a>
类别</a>
/ 子类别
我需要子类别在从面包屑中删除产品标题后仍然可以点击。
谢谢
您的代码有效,但面包屑中的最后一个元素从未包含 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;
}