WooCommerce - Conditionally enable shipping for virtual products

admin2025-06-06  5

I am currently enabling shipping for virtual product in WooCommerce by inserting the following in my functions file

add_filter( 'woocommerce_cart_needs_shipping_address', '__return_true', 50 );

Is there a way to modify this so I can exclude a product? I have one specific virtual product that does not need a shipping address.

I am currently enabling shipping for virtual product in WooCommerce by inserting the following in my functions file

add_filter( 'woocommerce_cart_needs_shipping_address', '__return_true', 50 );

Is there a way to modify this so I can exclude a product? I have one specific virtual product that does not need a shipping address.

Share Improve this question asked Nov 16, 2018 at 11:01 fightstarr20fightstarr20 1,1358 gold badges26 silver badges47 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 2

You can try following code:

add_filter('woocommerce_cart_needs_shipping_address','fun_return_shipping_param');
function fun_return_shipping_param($needs_shipping_address)
{

    $items = WC()->cart->get_cart();
    $product_ids = array();
    foreach($items as $item => $values) 
    { 
            $product_ids[] = $values['data']->get_id(); //You can get product id of product added in cart
    }
    if(in_array($your_product_id, $product_ids)) // check whether your product is in cart
       $needs_shipping_address = true;

    return $needs_shipping_address;

}
转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1749174822a316989.html

最新回复(0)