我如何调整此设置以更改结账页面中按产品类别而不是特定产品提供的国家/地区?
我正在尝试这个:
/* 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 不够熟悉...
要检查产品(或项目)是否分配给产品类别术语,您应该使用
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 文件中(或插件中)。应该可以。