通过主题自定义 Woocommerce 中的产品类别面包屑链接

Customizing product categories breadcrumb links in Woocommerce via the theme

我正在尝试修改 class-wc-breadcrumb.php 以自定义我的产品页面面包屑中的产品类别链接。

此文件位于:wp-content/plugins/woocommerce/includes

我试图在我的子主题中复制并编辑这个文件:
wp-content/themes/Divi-child/woocommerce/includes/lass-wc-breadcrumb.php
但是没用

如何通过我的子主题在 Woocommerce 中自定义产品类别面包屑链接?

有很多选项可以更改选项..

为此

add_filter( 'woocommerce_breadcrumb_defaults', 'jk_woocommerce_breadcrumbs' );
function jk_woocommerce_breadcrumbs() {
return array(
        'delimiter'   => ' / ',
        'wrap_before' => '<nav class="woocommerce-breadcrumb" itemprop="breadcrumb">',
        'wrap_after'  => '</nav>',
        'before'      => '',
        'after'       => '',
        'home'        => _x( 'Home', 'breadcrumb', 'woocommerce' ),
    );
}

您可以通过此更改所有内容。

更多信息:- https://docs.woocommerce.com/document/customise-the-woocommerce-breadcrumb/

It is NOT possible to change cores files via your theme and it is strictly prohibited to do it for many reasons.

相反 你有 2 个选项:

  1. 为 WooCommerce 面包屑定制使用任何可用的操作和过滤器挂钩。
  2. 自定义 WooCommerce 模板 global/breadcrumb.php via your active child theme

您情况的最佳选择是第一个选项。在下面的代码中,您将能够自定义每个 link 的 Woocommerce 产品类别 links.

在下面的代码中,我使用 foreach 循环遍历每个 $crumb。每个 $crumb 是一个数组,其中:

  • $crumb[0]是显示的标签名
  • $crumb[1] 是将使用 $crumbs[$key][1]
  • 更改的 link(或 url)

我们将检查当前 $crumb[0] 是否为产品类别名称,然后才允许在 $crumbs[$key][1] 中自定义它的 link。

You will have to set your new links for each product category adding your own necessary code to this filtered hooked function example.

代码:

add_filter( 'woocommerce_get_breadcrumb', 'custom_breadcrumb', 10, 2 );
function custom_breadcrumb( $crumbs, $object_class ){
    // Loop through all $crumb
    foreach( $crumbs as $key => $crumb ){
        $taxonomy = 'product_cat'; // The product category taxonomy

        // Check if it is a product category term
        $term_array = term_exists( $crumb[0], $taxonomy );

        // if it is a product category term
        if ( $term_array !== 0 && $term_array !== null ) {

            // Get the WP_Term instance object
            $term = get_term( $term_array['term_id'], $taxonomy );

            // HERE set your new link with a custom one
            $crumbs[$key][1] = home_url( '/'.$term->slug.'/' ); // or use all other dedicated functions
        }
    }

    return $crumbs;
}

代码进入活动子主题(或活动主题)的 function.php 文件。

已测试并有效。

add_filter( 'woocommerce_breadcrumb_defaults', 'ts_woocommerce_breadcrumbs_change' );
function ts_woocommerce_breadcrumbs_change() {
    return array(
            'delimiter'   => '  ',
            'wrap_before' => '<ul class="breadcrumb load-animate theme-animate fadeInUp animated" style="animation-delay: 0.3s;">',
            'wrap_after'  => '</ul>',
            'before'      => '<li> ',
            'after'       => '</li>',
            'home'        => _x( 'Home', 'breadcrumb', 'woocommerce' ),
            
        );
}