仅计算顶级 WooCommerce 产品类别形成自定义运输计算

Count only top level WooCommerce product categories form custom shipping calculations

我正在使用 上一个问题的答案代码。

如何从产品类别 ID 数组中排除子类别,以仅保留热门类别?

根据此自定义计算的解决方案,还包括用于计算运费的子类别。 我需要将它们排除在外,因为它们仅用于分类项目。

我尝试将过滤器添加到数组中,但网站停用了。

要仅计算顶级产品类别 (不是子类别),您将在 中替换答案代码,以下代码块:

    // Loop through cart items for the current shipping package
    foreach( $package['contents'] as $cart_item ){
        $term_ids = array_merge(
            $term_ids,
            (array) $cart_item['data']->get_category_ids()
        );
    }

有了这个:

    // Loop through cart items for the current shipping package
    foreach( $package['contents'] as $cart_item ){
        $terms = wp_get_post_terms( $cart_item['product_id'], 'product_cat' );

        // Loop through product categories terms for current cart item
        foreach ($terms as $term ) {
            // Only top level product category terms
            if ( $term->parent == 0 ) {
                // Set the term id in the array
                $term_ids[] = $term->term_id; 
            }
        }
    }

已测试并有效。