Pre-orders
The pre-order module lets you mark products as pre-order, display the release date and change the button text. Useful for stores with electronics, books, games and other products offered before release.
Global configuration
Section titled “Global configuration”Go to Polski > Modules and enable Pre-orders (module key pre_order). Since Polski PRO 1.22.0 the PRO modules have their own rows there, and the settings below are the fields on that row; saving the row writes them into the polski_preorder option. The module ships off, because it changes what a shopper is told.
| Setting | Key | Default | Description |
|---|---|---|---|
| Show pre-order wording on the product page | show_on_single |
On | Gates the pre-order notice on the single product page |
| Add to cart button text | button_text |
empty, falls back to “Pre-order now” | Global button text for pre-order products |
| Availability text | availability_text |
empty, falls back to “Pre-order, shipping from {date}” | Replaces the stock status. {date} is the formatted release date |
| Show the pre-order notice | show_notice |
On | The notice under the product summary |
| Notice text | notice_text |
empty | Body of that notice. {date} is interpolated here too |
| Allow pre-orders and normal products in one cart | allow_mixed_cart |
On | With this on, mixing is allowed. Turn it off to warn about a mixed cart |
| Release date format | date_format |
d.m.Y |
Display format for the release date |
Product configuration
Section titled “Product configuration”Meta fields
Section titled “Meta fields”Since Polski PRO 1.26.0 these live on the Polski Pro tab of the product data box, which is where they are written. See Per-product settings for the whole tab.
| Field | Key | Type | Description |
|---|---|---|---|
| Sell as a pre-order | _polski_preorder_enabled |
yes / no |
Half of the gate |
| Release date | _polski_preorder_date |
string (Y-m-d) |
The other half, and the date shown to the customer |
| Button text | _polski_preorder_button_text |
string |
Overrides the global button text for this product |
A product is a pre-order only when both the flag is yes and the date parses. Ticking the box and leaving the date empty changes nothing on the storefront. The availability text is global, on the Modules screen, and has no per-product override.
Setting via WP-CLI
Section titled “Setting via WP-CLI”wp post meta update 123 _polski_preorder_enabled "yes"wp post meta update 123 _polski_preorder_date "2026-06-15"wp post meta update 123 _polski_preorder_button_text "Zamów teraz, premiera 15 czerwca"Programmatic setting
Section titled “Programmatic setting”update_post_meta($product_id, '_polski_preorder_enabled', 'yes');update_post_meta($product_id, '_polski_preorder_date', '2026-06-15');Frontend display
Section titled “Frontend display”Purchase button
Section titled “Purchase button”When a product is marked as pre-order, the “Add to cart” button text changes to the configured pre-order text. This applies to:
- Single product page
- Archive, category and tag pages
- Search results
- WooCommerce blocks (Product Grid, Product Collection)
Availability text
Section titled “Availability text”Instead of the standard stock status (“In stock”, “Out of stock”), the availability text with the release date is displayed. The {date} placeholder is replaced with the formatted date.
Display example:
Dostępne od 15.06.2026
After the release date
Section titled “After the release date”Nothing switches itself off. There is no scheduled task that clears the pre-order flag once the release date passes, so the wording stays until you untick Sell as a pre-order on the product, or clear the date.
Cart validation
Section titled “Cart validation”With Allow pre-orders and normal products in one cart turned off, a cart holding both a pre-order and an ordinary product raises a WooCommerce error notice on every totals recalculation, carrying the module’s mixed-cart message.
It is a notice, not a block: the product is still added, and nothing stops the shopper reaching checkout with a mixed cart. Release dates are not compared, so two pre-orders with different dates are never flagged.
Shortcodes and hooks
Section titled “Shortcodes and hooks”The module registers no shortcode, and it adds no filters or actions of its own. It works entirely through WooCommerce’s own hooks:
| WooCommerce hook | What the module does |
|---|---|
woocommerce_product_single_add_to_cart_text and woocommerce_product_add_to_cart_text (priority 20) |
Swaps the button text |
woocommerce_get_availability_text (priority 20) |
Replaces the stock status with the availability text |
woocommerce_single_product_summary (priority 31) |
Prints the pre-order notice |
woocommerce_before_calculate_totals |
Raises the mixed-cart notice |
To change the wording from code, hook those WooCommerce filters at a later priority.
Variable products
Section titled “Variable products”The pre-order flag and the release date are meta on the parent product, so a variable product is a pre-order as a whole or not at all. There are no per-variation pre-order settings.
Troubleshooting
Section titled “Troubleshooting”The product still reads as a pre-order after the release date That is the current behaviour, not a fault: nothing clears the flag on a schedule. Untick Sell as a pre-order on the product, or clear its release date.
The pre-order wording does not appear at all
Check all three: the pre_order module is enabled on Polski > Modules, Sell as a pre-order is ticked on the product, and the product has a release date that parses.
Customer put a pre-order and regular products in one cart That is allowed unless you turn Allow pre-orders and normal products in one cart off, and even then the shopper only gets an error notice, they are not stopped.
Release date displays in the wrong format
Check the “Date format” setting in the module configuration. The format uses standard PHP date() placeholders.
Next steps
Section titled “Next steps”- Report issues: GitHub Issues
- Related modules: Bundles and add-ons