# 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.

- Type: PHP
- Runs: Run everywhere
- Category: [WooCommerce](https://wpide.com/library/category/woocommerce/)
- Requires: WooCommerce
- Tags: woocommerce, shipping, free-shipping, promotion
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/woo-free-shipping-date-range/

## Code

```php
$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 use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Free Shipping During a Promotion Period" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
