仅为 Woocommerce 中的特定产品启用 "Ship to a different address"
Enable "Ship to a different address" only for specific products in Woocommerce
我想禁用(隐藏)大多数产品 'Ship to a different address' 并仅为特定(几个)产品启用它。我使用了 add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');
但它禁用了所有产品的 'Ship to a different address' 部分。
您需要与您的其他问题类似的代码:
add_filter( 'woocommerce_cart_needs_shipping_address', 'disable_checkout_shipping_address');
function disable_checkout_shipping_address( $needs_shipping_address ) {
$products_ids = array(793, 796);
$found = $others_found = false;
foreach ( WC()->cart->get_cart() as $cart_item ){
if (in_array( $cart_item['data']->get_id(), $products_ids ) ){
$found = true;
} else {
$others_found = true;
}
}
if( $found && ! $others_found )
$needs_shipping_address = true;
else
$needs_shipping_address = false;
return $needs_shipping_address;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。
我想禁用(隐藏)大多数产品 'Ship to a different address' 并仅为特定(几个)产品启用它。我使用了 add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');
但它禁用了所有产品的 'Ship to a different address' 部分。
您需要与您的其他问题类似的代码:
add_filter( 'woocommerce_cart_needs_shipping_address', 'disable_checkout_shipping_address');
function disable_checkout_shipping_address( $needs_shipping_address ) {
$products_ids = array(793, 796);
$found = $others_found = false;
foreach ( WC()->cart->get_cart() as $cart_item ){
if (in_array( $cart_item['data']->get_id(), $products_ids ) ){
$found = true;
} else {
$others_found = true;
}
}
if( $found && ! $others_found )
$needs_shipping_address = true;
else
$needs_shipping_address = false;
return $needs_shipping_address;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。