仅计算顶级 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;
}
}
}
已测试并有效。
我正在使用
如何从产品类别 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;
}
}
}
已测试并有效。