Free Shipping During a Promotion Period
Turns on free shipping for everyone between two dates, so a free-shipping weekend or holiday promotion starts and stops by itself.
Opens WPIDE on
Code
$wpide_free_ship_from = '2026-11-27 00:00'; // Promotion start (site timezone).
$wpide_free_ship_to = '2026-11-30 23:59'; // Promotion end.
add_filter( 'woocommerce_shipping_free_shipping_is_available', function ( $available ) use ( $wpide_free_ship_from, $wpide_free_ship_to ) {
if ( $available ) {
return $available;
}
$now = current_time( 'timestamp' );
return $now >= strtotime( $wpide_free_ship_from ) && $now <= strtotime( $wpide_free_ship_to );
}, 20 );
add_filter( 'woocommerce_cart_shipping_packages', function ( $packages ) {
foreach ( $packages as $i => $package ) {
$packages[ $i ]['wpide_day'] = current_time( 'Y-m-d' ); // Refresh cached rates daily.
}
return $packages;
} );
Notes
Dates use the site's timezone, and the shipping zone needs a Free Shipping method for the offer to appear.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.