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

时间:2018-02-20 13:12:33

标签: php wordpress woocommerce breadcrumbs custom-taxonomy

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

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

我尝试将我孩子主题中的这个文件复制并编辑成:
wp-content/themes/Divi-child/woocommerce/includes/lass-wc-breadcrumb.php
但它不起作用。

如何通过我的孩子主题自定义Woocommerce中的产品类别痕迹链接?

2 个答案:

答案 0 :(得分:3)

  

无法通过您的主题更改核心文件,并且出于多种原因严格禁止这样做。

相反您有 2个选项

  1. 使用任何可用的操作和过滤器钩子进行WooCommerce面包屑自定义。
  2. 自定义WooCommerce模板global/breadcrumb.php via your active child theme
  3. 您案例中的最佳选择是第一个选项。在下面的代码中,您将能够自定义Woocommerce产品类别链接的每个链接。

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

    • $crumb[0]是显示的标签名称
    • $crumb[1]是将使用$crumbs[$key][1]更改的链接(或网址)...

    我们会检查当前$crumb[0]是否为产品类别名称,然后才能在$crumbs[$key][1]中自定义其链接。

      

    您必须为每个产品类别添加您自己的必要代码设置新链接到此过滤后的钩子函数示例。

    代码:

    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文件中。

    经过测试和工作。

答案 1 :(得分:1)

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

对于此

function modifyAxes() {
var ui = SpreadsheetApp.getUi(); 
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName('mySheet'); 
var chart = sh.getCharts()[0];
chart = chart.modify()
// set vAxis minimal range or so..
.build();
sh.update

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

有关详情: - https://docs.woocommerce.com/document/customise-the-woocommerce-breadcrumb/