=== Delivery Date & Timeslot for WooCommerce ===

Contributors: dreamfox, freemius
Donate link: https://dreamfoxmedia.com
Tags: woocommerce delivery date, woocommerce delivery time, order delivery date, delivery scheduling, woocommerce checkout
Requires at least: 5.0
Tested up to: 7.0
Stable tag: 3.0.9
WC requires at least: 6.0.0
WC tested up to: 10.9.4
Requires PHP: 7.4
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Schedule WooCommerce delivery dates and timeslots at checkout. Set lead times, slot capacity, and delivery windows — full slots hide automatically.

== Description ==

Take full control of your WooCommerce delivery schedule with **Delivery Date & Timeslot for WooCommerce**.

This powerful plugin lets customers choose **when** their order arrives — directly at checkout. You define lead times, delivery windows, slot duration, and how many orders fit in each timeslot. When a slot is full, it disappears automatically so you never get overbooked.

Perfect for bakeries, florists, meal prep stores, local delivery businesses, and any WooCommerce shop that needs reliable order scheduling without custom development.

👉 Learn more about features, documentation, and premium options: [dreamfoxmedia.com](https://dreamfoxmedia.com/plugins/delivery-date-for-woocommerce/)

🚀 **Why this plugin?**

Manual delivery scheduling leads to missed dates, overbooked slots, and endless customer emails asking *"When can you deliver?"*

With this plugin, you can:
– Let customers pick their **delivery date** at checkout
– Offer **timeslots** inside your delivery window (e.g. 08:00–20:00)
– Set a **maximum number of orders per slot** — full slots hide automatically
– Apply rules **per product category** so scheduling only shows when it matters
– Show the chosen date and timeslot in **orders, emails, and the thank-you page**

👉 **Result:** Fewer missed deliveries, less admin work, and a smoother checkout experience your customers trust.

### Key Features

✔ Delivery date picker on the WooCommerce checkout page
✔ Minimum lead time — e.g. require at least 3 days before delivery
✔ Category-based rules — apply scheduling to any product categories, no limit
✔ Delivery date and timeslot shown in admin orders, customer emails, order details, and thank-you page
✔ Lightweight, fast, and easy to configure
✔ No coding required

**Delivery Timeslots (free)**

✔ Enable or disable timeslots with one toggle
✔ Define your delivery window start and end time (e.g. 08:00 – 20:00)
✔ Choose slot duration: 1, 2, 3, 4, 6, 8, or 12 hours
✔ Set max orders per timeslot — full slots are hidden from customers automatically
✔ Past timeslots on today's date are filtered out in real time
✔ Live slot preview in admin — see your schedule update as you adjust settings

**Built for Performance and Security**

✔ HPOS compatible — fully supports WooCommerce High-Performance Order Storage
✔ Nonce-verified AJAX, capability checks, and sanitized data throughout
✔ Translation ready — Dutch, English, and German included

### Premium Features

Features marked with * are available in the Premium version.

🔥 Unlock advanced delivery management and full scheduling control:

- ✔* Working days only — count only business days toward lead time
- ✔* Holiday and blackout dates — block dates customers cannot book
- ✔* Disable specific weekdays (e.g. no Sunday or Monday deliveries)
- ✔* Custom delivery date label and description at checkout
- ✔* Make the delivery date field required
- ✔* Auto-fill the earliest available delivery date for customers

[Upgrade to Premium](https://dreamfoxmedia.com/plugins/delivery-date-for-woocommerce/)

### Free vs Premium

|| Feature || Free || Premium ||
| Delivery date picker at checkout | ✔ | ✔ |
| Timeslot booking with capacity limits | ✔ | ✔ |
| Category-based scheduling (unlimited categories) | ✔ | ✔ |
| Working days only (lead time) | ✖ | ✔* |
| Holiday / blackout dates | ✖ | ✔* |
| Disable specific weekdays | ✖ | ✔* |
| Custom checkout label & description | ✖ | ✔* |
| Required delivery date field | ✖ | ✔* |
| Auto-fill earliest available date | ✖ | ✔* |

*Premium features are marked with *

### How It Works

1. Go to **WooCommerce > Delivery Date** in your admin menu
2. Set your minimum delivery days and select product categories
3. Enable timeslots, set your delivery window, slot duration, and max orders per slot
4. Save your settings

At checkout:
– Customers pick a delivery date from the calendar
– Available timeslots load automatically for the selected date
– Full or past slots are hidden — no manual management needed

Simple, powerful, and built for real delivery workflows.

📚 **Knowledge Base:** [help.dreamfoxmedia.com](https://help.dreamfoxmedia.com)

🛠 **Need help or support?** [Submit a request](https://dreamfoxmedia.com/support/)

### More WooCommerce Plugins by Dreamfox

* [Payment Gateway Per Product](https://wordpress.org/plugins/woocommerce-product-payments/) — show the right payment methods per product, category, or tag
* [Shipping Gateway Per Product](https://wordpress.org/plugins/woocommerce-shipping-gateway-per-product/) — control shipping methods per product, category, or tag

Follow us: [dreamfoxmedia.com](https://dreamfoxmedia.com)


== Installation ==

= Automatic installation =

1. Log in to your WordPress dashboard and go to **Plugins > Add New**.
2. Search for **Delivery Date & Timeslot for WooCommerce**.
3. Click **Install Now** and then **Activate**.

= Manual installation =

1. Download the plugin zip file.
2. Go to **Plugins > Add New > Upload Plugin**.
3. Select the zip file and click **Install Now**.
4. Click **Activate Plugin**.

= After activation =

1. Go to **WooCommerce > Delivery Date** in your admin menu.
2. Set your minimum delivery days and select the product categories the date picker should apply to.
3. Scroll down to the **Timeslot Settings** card to enable timeslots, set your delivery window, slot duration, and max orders per slot.
4. Save and you're done — the date picker and timeslot selector will appear at checkout.


== Frequently Asked Questions ==

= Is the timeslot feature free? =

Yes, completely free. Enable it under WooCommerce > Delivery Date > Timeslot Settings.

= What happens when a timeslot is fully booked? =

The slot is automatically removed from the dropdown so customers cannot select it. No manual action required.

= Can I set different delivery windows on different days? =

That is a Premium feature. The free version applies the same delivery window every day.

= Can customers book a delivery for today? =

Yes, but only timeslots that have not yet passed. If it is 14:00 and your slots are 2 hours long, the 08:00-10:00 and 10:00-12:00 slots will already be hidden.

= Can I add holiday or blackout dates? =

Yes, in the Premium version. The free version does not support holiday dates.

= Is this plugin compatible with WooCommerce HPOS (High-Performance Order Storage)? =

Yes. The plugin is fully compatible with WooCommerce custom order tables (HPOS).

= Where can I find documentation and support? =

You can find everything you need to get started and go further:

🌐 Website & Premium Features:
https://dreamfoxmedia.com/plugins/delivery-date-for-woocommerce/

📚 Knowledge Base (guides & tutorials):
https://help.dreamfoxmedia.com

🛠 Support (submit a ticket):
https://dreamfoxmedia.com/support-form/

= Which languages are supported? =

Dutch, English, and German are included. The plugin is fully translation ready via .pot file.


== Screenshots ==

1. screenshot1.png
2. screenshot2.png
3. screenshot3.png


== Changelog ==

= 3.0.9 - 2026-07-26 =
* Compatibility: getest met WordPress 7.0.2 en WooCommerce 10.9.4

= 3.0.8 - 2026-07-25 =
* Compatibility: getest met WordPress 7.0.2 en WooCommerce 10.9.4

= 3.0.7 - 2026-07-24 =
* Compatibility: getest met WordPress 7.0.2 en WooCommerce 10.9.4

= 3.0.6 - 2026-07-23 =
* Compatibility: getest met WordPress 7.0.2 en WooCommerce 10.9.4

= 3.0.5 - 2026-07-22 =
* Compatibility: getest met WordPress 7.0.2 en WooCommerce 10.9.4

= 3.0.4 - 2026-07-21 =
* Compatibility: getest met WordPress 7.0.2 en WooCommerce 10.9.4

= 3.0.3 =
* Fix: my_fs() incorrectly fell back to another DreamFox plugin's unrelated Freemius accessor (dfm_sgppfw_fs, from the shipping plugin) instead of a plain no-op stub — a leftover copy-paste reference that could sync the wrong plugin's basename if that plugin's premium build were ever active alongside this one.

= 3.0.2 =
* Tested with the latest WordPress (7.0.1) and WooCommerce (10.9.4) versions.
* Fixed Contributors field: "dreamfoxmedia" is not a valid WordPress.org username (was being silently dropped on import); corrected to "dreamfox".
* Corrected Stable tag/Version, which had drifted to a stale "2.5.1" that was never actually released (actual last release was 3.0.1) — readme.txt and the plugin header just hadn't been kept in sync with the real release tags.
* Removed duplicate hardcoded version strings from the plugin code; the version constant is now read from the plugin header at runtime instead of being copy-pasted in multiple files.

= 2.5.1 =
* Updated Freemius SDK from 2.13.1 to 2.13.2

= 2.5.0 =
* New: Delivery timeslots — enable/disable via settings, set slot duration (1–12 hours), define business window (start and end time), and set max orders per slot
* New: Customers choose an available timeslot at checkout; full slots are hidden automatically
* New: Timeslot shown on order confirmation, thank-you page, order details, and customer and admin emails
* New: Admin settings card with live slot preview
* New: Past timeslots on today's date are filtered out automatically
* Security: nonce verification added to all AJAX handlers
* Security: removed unauthenticated access to admin AJAX endpoints
* Security: added capability checks to all admin AJAX handlers
* Security: escaped all template output with esc_html() and esc_attr()
* Security: sanitized all POST input with sanitize_text_field( wp_unslash() )
* Security: replaced direct $_SERVER access with home_url()
* Security: added JSON decode error handling
* Security: removed hardcoded nonce placeholder from JavaScript; wired real server-generated nonce end-to-end
* Updated Freemius SDK from 2.12.2 to 2.13.1
* Replaced deprecated mysql2date() with wp_date()
* Fixed text domain inconsistency throughout
* Tested with WordPress 7.0 and WooCommerce 10.7

= 2.3.0 =
* Fix bug for loading datepicker

= 2.2.1 =
* Latest WordPress and WooCommerce compatible
* Update Freemius SDK to version 2.12.2

= 2.2.0 =
* Latest WordPress and WooCommerce compatible
* Update Freemius SDK to version 2.7.3

= 2.1.4 =
* Latest WordPress and WooCommerce compatible
* Update Freemius SDK to version 2.7.2

= 2.1.3 =
* Latest WordPress and WooCommerce compatible
* Update Freemius SDK to 2.5.8

= 2.0.0 =
* Latest WordPress and WooCommerce compatible
* Added new features

= 1.3.1 =
* Latest WordPress and WooCommerce compatible

= 1.3.0 =
* Fix checkout bug

= 1.2.9 =
* Fix footer bug

= 1.2.8 =
* Fix date bug

= 1.2.7 =
* Checked with latest version of WooCommerce and WordPress
* Changed deprecated function to core function
* Updated PUC to 4.10

= 1.2.6 =
* Checked with latest version of WooCommerce and WordPress
* Changed deprecated function to core function

= 1.2.5 =
* Changed update locations

= 1.2.4 =
* Fixed d/m/Y format date conversion issue

= 1.2.3 =
* Checked with latest version of WooCommerce and WordPress
* Changed deprecated function to core function
* Delivery date label now shows correctly on order details and email

= 1.2.2 =
* Checked with latest version of WooCommerce and WordPress

= 1.2.1 =
* Date picker fixed for secure server
* Checked with latest version of WooCommerce and WordPress

= 1.2.0 =
* Date picker with language support
* Fixed dates disabled for d/m/y format
* Checked with latest version of WooCommerce and WordPress

= 1.1.9 =
* Checked with latest version of WooCommerce and WordPress
* Validate and sanitize code per WordPress security standards

= 1.1.8 =
* Checked with latest version of WooCommerce and WordPress

= 1.1.7 =
* Tested with latest WooCommerce and WordPress
* Tested and made compatible with PHP 7+

= 1.1.6 =
* Fixed minor issue

= 1.1.4 =
* Added feature to set holidays by WooCommerce categories

= 1.1.3 =
* Updated to work with latest WooCommerce

= 1.1.2 =
* Update to latest

= 1.1.1 =
* Delivery info with language support

= 1.1.0 =
* Trim post date and convert

= 1.0.9 =
* Opened different options of date format

= 1.0.8 =
* Provided date selection for non-locale

= 1.0.7 =
* Calendar language changes according to language setting
* Updated language files

= 1.0.6 =
* Fixed maximum date calculation logic

= 1.0.5 =
* Allow today delivery date for respective category
* Added facility to change text of delivery date label and description on checkout page

= 1.0.4 =
* Option to default delivery date (blank/default)
* Option for required input field (Yes/No) with error message on checkout page
* Category-wise days (default global days)
* Formatted scripts

= 1.0.3 =
* Changed scripting on checkout page
* Updated language files for Dutch and German
* Added filter checkout_delivery_field_setting to change field settings and default values

= 1.0.2 =
* Fixes and made compatible with WooCommerce 2.2.4

= 1.0.1 =
* Fixed date selection format

= 1.0.0 =
* Added to WordPress plugin directory


== Upgrade Notice ==

= 2.5.1 =
Maintenance release: Freemius SDK updated to 2.13.2.

= 2.5.0 =
Major update: free delivery timeslot booking added, full security hardening, Freemius SDK updated to 2.13.1. Upgrade recommended for all users.
