首页 > 解决方案 > 仅为 Woocommerce 中的特定产品启用“运送到其他地址”

问题描述

我想为大多数产品禁用(隐藏)“运送到不同地址”,并仅对特定(几个)产品启用它。我用过add_filter( 'woocommerce_cart_needs_shipping_address', '__return_false');,但它禁用了所有产品的“运送到不同地址”部分。

标签: phpwordpresswoocommerceproductcheckout

解决方案


您需要与其他问题类似的代码:

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 文件中。


推荐阅读