WOOCOMMERCE:按产品类别(而不是特定产品)更改结帐中可用的国家/地区?

问题描述 投票:0回答:1

我如何调整此设置以更改结账页面中按产品类别而不是特定产品提供的国家/地区?

limit shippable country by product category

我正在尝试这个:

/* HIDE U.S. as a country destination if category is "Canada Only" */

add_filter( 'woocommerce_countries', 'products_disable_country', 10, 1 );
function products_disable_country( $countries ) {
if( is_cart() || is_checkout() ) {

    $product_cat = array(195);

    foreach( WC()->cart->get_cart() as $item ){
        if( in_array( $item['product_cat'], $product_cat ) ){
            unset($countries["US"]);
            return $countries;
        }
    }
}

return $countries;
}

但是还没有骰子...

使用此代码作为基础,但对 php 不够熟悉...

当 Woocommerce 上的购物车中有特定产品时,从国家/地区列表中删除加拿大

php woocommerce fedex shipping-method
1个回答
0
投票

要检查产品(或项目)是否分配给产品类别术语,您应该使用

has_term()
条件 WordPress 函数,例如:

add_filter( 'woocommerce_countries', 'allowed_countries_for_product_category', 10, 1 );
function allowed_countries_for_product_category( $countries ) {
    if( is_cart() || is_checkout() ) {

        $targeted_terms = array(195);
    
        foreach( WC()->cart->get_cart() as $item ){
            if( has_term($targeted_terms, 'product_cat', $item['product_id']) ){
                unset($countries["US"]);
            }
        }
    }
    return $countries;
}

代码位于子主题的functions.php 文件中(或插件中)。应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.