从Woocommerce面包屑中删除“商店”

时间:2018-10-24 15:42:11

标签: php wordpress woocommerce breadcrumbs

我没有主商店页面,只有商品类别。 Woocommerce面包屑始终在需要删除的面包屑中显示“商店”踪迹。在Woo文档中,我只能找到有关如何更改“ home”子句或定界符,或如何完全删除面包屑的信息。我如何简单地删除“购物”线索?

编辑:我不想更改/更改“商店”步道的名称/链接,而是将其完全删除!

5 个答案:

答案 0 :(得分:5)

这对我有用,看起来woocommerce考虑了屑数组中的索引。

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;
}

我希望这可以帮助某人 谢谢

答案 1 :(得分:4)

要从Woocommerce面包屑中完全删除“商店”,请使用以下命令:

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文件中。经过测试,可以正常工作。

答案 2 :(得分:1)

要完全控制Breadcrubs的输出,我建议复制-> plugins / woocommerce / global / breadcrumb.php中的面包路径文件。 将其放在您的主题文件夹/woocommerce/global/breadcrumb.php

我的默认面包屑看起来像这样: “主页»商店»主页»类别»子类别»产品” 家由于某种原因出现了两次。以下是来自Breadcrumb.php的代码,该代码显示了如何删除“首页”和“商店”的第一个外观

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 ' &raquo; ';
    }
}

echo $wrap_after;

}

要更改URL,只需在给定标记中为给定的$ key或crumb [0]值设置一个新值。 如果您只希望在商店中的特定位置进行此操作,则只需使用woocommerce条件函数,例如:

if(is_product()){
    if( $key === 0 || $key === 1 ){
       continue;
    }
}

如果在单个产品页面上,则仅除去前两个碎屑。在https://docs.woocommerce.com/document/conditional-tags/

中查看更多信息

答案 3 :(得分:0)

// Remove shop from breadcrumbs
function my_remove_shop_from_breadcrumbs( $trail ) {
   unset( $trail['shop'] );
   return $trail;
}
add_filter( 'wpex_breadcrumbs_trail', 'my_remove_shop_from_breadcrumbs', 20 );

在function.php中添加代码

答案 4 :(得分:0)

此代码段更简单:

add_filter('woocommerce_get_breadcrumb', 'remove_breadcrumb_home');

function remove_breadcrumb_home( $breadcrumb )
{
    array_shift($breadcrumb);
    return $breadcrumb;
}