从 Woocommerce 面包屑中删除 "Shop"
Remove "Shop" from Woocommerce breadcrumbs
我没有主商店页面,只有产品类别。 Woocommerce 面包屑总是在我需要删除的面包屑中显示 "Shop" 踪迹。在 Woo 文档中,我只能捏造有关如何更改 "home" 段塞或定界符,或如何完全删除面包屑的信息。我如何简单地删除 "Shop" 踪迹?
编辑:我不想 alter/change "shop" 路径的 name/link 但完全删除它!
要从 Woocommerce 面包屑中完全删除 "Shop",请使用以下命令:
add_filter( 'woocommerce_get_breadcrumb', 'remove_shop_crumb', 20, 2 );
function remove_shop_crumb( $crumbs, $breadcrumb ){
foreach( $crumbs as $key => $crumb ){
if( $crumb[0] === __('Shop', 'Woocommerce') ) {
unset($crumbs[$key]);
}
}
return $crumbs;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
为了完全控制面包屑输出,我建议复制位于 --> plugins/woocommerce/global/breadcrumb.php 的文件 breadcrumb.php
放在 you-theme-folder/woocommerce/global/breadcrumb.php
我的默认面包屑导航如下所示:
"Home » Shop » Home » Category » Subcategory » Product"
由于某种原因,家出现了两次。下面是 breadcrumb.php 中的代码,它显示了我如何删除 "Home" 和 "Shop"
的第一个外观
if ( ! empty( $breadcrumb ) ) {
echo $wrap_before;
foreach ( $breadcrumb as $key => $crumb ) {
echo $before;
//Every crumb have a $key which starts at 0 for the first crumb.
//Here I simply skip out of the loop for the first two crumbs.
//You can just echo the $key to see what number you need to remove.
if( $key === 0 || $key === 1 ){
continue;
}
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 ' » ';
}
}
echo $wrap_after;
}
要更改网址,只需在锚标签内为给定的 $key 或 crumb[0] 值设置一个新网址。
如果您只希望在商店的特定位置发生这种情况,只需使用 woocommerce 条件函数,例如:
if(is_product()){
if( $key === 0 || $key === 1 ){
continue;
}
}
仅在单个产品页面上删除前两个面包屑。在 https://docs.woocommerce.com/document/conditional-tags/
查看更多
这段代码更简单:
add_filter('woocommerce_get_breadcrumb', 'remove_breadcrumb_home');
function remove_breadcrumb_home( $breadcrumb )
{
array_shift($breadcrumb);
return $breadcrumb;
}
这对我有用,看起来 woocommerce 考虑了 crumbs 数组中的索引。
add_filter('woocommerce_get_breadcrumb', 'remove_shop_crumb', 20, 2);
function remove_shop_crumb($crumbs, $breadcrumb)
{
$new_crumbs = array();
foreach ($crumbs as $key => $crumb) {
if ($crumb[0] !== __('Shop', 'Woocommerce')) {
$new_crumbs[] = $crumb;
}
}
return $new_crumbs;
}
我希望这对某人有所帮助
谢谢
这段代码对我有用
它改变了 JSON yoast seo
上次测试:WordPress 5.8 上的 Yoast SEO 16.9
add_filter( 'wpseo_breadcrumb_links' ,'wpseo_remove_breadcrumb_link', 10 );
function wpseo_remove_breadcrumb_link( $links ){
// Remove all breadcrumbs that have the text: Shop.
$new_links = array_filter( $links, function ( $link ) { return $link['text'] !== 'Shop'; } );
// Reset array keys.
return array_values( $new_links );
}
我没有主商店页面,只有产品类别。 Woocommerce 面包屑总是在我需要删除的面包屑中显示 "Shop" 踪迹。在 Woo 文档中,我只能捏造有关如何更改 "home" 段塞或定界符,或如何完全删除面包屑的信息。我如何简单地删除 "Shop" 踪迹?
编辑:我不想 alter/change "shop" 路径的 name/link 但完全删除它!
要从 Woocommerce 面包屑中完全删除 "Shop",请使用以下命令:
add_filter( 'woocommerce_get_breadcrumb', 'remove_shop_crumb', 20, 2 );
function remove_shop_crumb( $crumbs, $breadcrumb ){
foreach( $crumbs as $key => $crumb ){
if( $crumb[0] === __('Shop', 'Woocommerce') ) {
unset($crumbs[$key]);
}
}
return $crumbs;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
为了完全控制面包屑输出,我建议复制位于 --> plugins/woocommerce/global/breadcrumb.php 的文件 breadcrumb.php 放在 you-theme-folder/woocommerce/global/breadcrumb.php
我的默认面包屑导航如下所示: "Home » Shop » Home » Category » Subcategory » Product" 由于某种原因,家出现了两次。下面是 breadcrumb.php 中的代码,它显示了我如何删除 "Home" 和 "Shop"
的第一个外观if ( ! empty( $breadcrumb ) ) {
echo $wrap_before;
foreach ( $breadcrumb as $key => $crumb ) {
echo $before;
//Every crumb have a $key which starts at 0 for the first crumb.
//Here I simply skip out of the loop for the first two crumbs.
//You can just echo the $key to see what number you need to remove.
if( $key === 0 || $key === 1 ){
continue;
}
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 ' » ';
}
}
echo $wrap_after;
}
要更改网址,只需在锚标签内为给定的 $key 或 crumb[0] 值设置一个新网址。 如果您只希望在商店的特定位置发生这种情况,只需使用 woocommerce 条件函数,例如:
if(is_product()){
if( $key === 0 || $key === 1 ){
continue;
}
}
仅在单个产品页面上删除前两个面包屑。在 https://docs.woocommerce.com/document/conditional-tags/
查看更多这段代码更简单:
add_filter('woocommerce_get_breadcrumb', 'remove_breadcrumb_home');
function remove_breadcrumb_home( $breadcrumb )
{
array_shift($breadcrumb);
return $breadcrumb;
}
这对我有用,看起来 woocommerce 考虑了 crumbs 数组中的索引。
add_filter('woocommerce_get_breadcrumb', 'remove_shop_crumb', 20, 2);
function remove_shop_crumb($crumbs, $breadcrumb)
{
$new_crumbs = array();
foreach ($crumbs as $key => $crumb) {
if ($crumb[0] !== __('Shop', 'Woocommerce')) {
$new_crumbs[] = $crumb;
}
}
return $new_crumbs;
}
我希望这对某人有所帮助 谢谢
这段代码对我有用 它改变了 JSON yoast seo
上次测试:WordPress 5.8 上的 Yoast SEO 16.9
add_filter( 'wpseo_breadcrumb_links' ,'wpseo_remove_breadcrumb_link', 10 );
function wpseo_remove_breadcrumb_link( $links ){
// Remove all breadcrumbs that have the text: Shop.
$new_links = array_filter( $links, function ( $link ) { return $link['text'] !== 'Shop'; } );
// Reset array keys.
return array_values( $new_links );
}