{"id":378403,"date":"2026-09-30T12:56:48","date_gmt":"2026-09-30T12:56:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bitnary-preorder-dates-for-woocommerce\/"},"modified":"2026-09-30T21:23:01","modified_gmt":"2026-09-30T21:23:01","slug":"bitnary-preorder-dates-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/bitnary-preorder-dates-for-woocommerce\/","author":23567560,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.4","stable_tag":"0.3.4","tested":"7.1.2","requires":"6.6","requires_php":"8.1","requires_plugins":null,"header_name":"Bitnary Preorder Dates for WooCommerce","header_author":"Davi Souto","header_description":"Sell on pre-order with two independent dates per product or variation: when orders stop and when the release ships.","assets_banners_color":"11343b","last_updated":"2026-09-30 21:23:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/preorder.bitnarydigital.com","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.4":{"tag":"0.3.4","author":"dvsouto","date":"2026-09-30 21:23:01","revision":3722055}},"upgrade_notice":{"0.3.4":"<p>Small fix to the pre-order button text in shop listings.<\/p>","0.3.3":"<p>Adds a Settings link in the plugins list and short pointers to the paid version.<\/p>","0.3.2":"<p>Drops the Freemius SDK from the free version. Nothing on your store changes.<\/p>","0.3.1":"<p>Renames the plugin&#039;s internal prefix. Your dates and settings carry over on their own.<\/p>","0.1.1":"<p>Fixes variation pre-order label\/button text and shop listing indication for variable products.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3721271,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3721271,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3721271,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3721271,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3721271,"resolution":"1","location":"assets","locale":"","width":1396,"height":389},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3721271,"resolution":"2","location":"assets","locale":"","width":1115,"height":171},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3721271,"resolution":"3","location":"assets","locale":"","width":809,"height":337},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3721271,"resolution":"4","location":"assets","locale":"","width":1372,"height":196},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3721271,"resolution":"5","location":"assets","locale":"","width":809,"height":269},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3721271,"resolution":"6","location":"assets","locale":"","width":1390,"height":730},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3721271,"resolution":"7","location":"assets","locale":"","width":1324,"height":420}},"screenshots":{"1":"Pre-order tab on a simple product, with the cutoff and release fields.","2":"Pre-order fields on a variation, inside the Variations tab.","3":"Pre-order label, release date and Pre-order button on the product page.","4":"Block-based cart showing the Ships on date under a pre-order item.","5":"The closed message on a product whose cutoff has passed.","6":"Settings under WooCommerce &gt; Settings &gt; Products &gt; Pre-order dates.","7":"The Pre-orders screen under the WooCommerce menu."}},"plugin_section":[],"plugin_tags":[127169,215013,16750,263138,286],"plugin_category":[45],"plugin_contributors":[283695],"plugin_business_model":[],"class_list":["post-378403","plugin","type-plugin","status-publish","hentry","plugin_tags-pre-order","plugin_tags-pre-orders","plugin_tags-preorder","plugin_tags-release-date","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dvsouto","plugin_committers-dvsouto"],"banners":{"banner":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/banner-772x250.png?rev=3721271","banner_2x":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/banner-1544x500.png?rev=3721271","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/icon-128x128.png?rev=3721271","icon_2x":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/icon-256x256.png?rev=3721271","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-1.png?rev=3721271","caption":"Pre-order tab on a simple product, with the cutoff and release fields."},{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-2.png?rev=3721271","caption":"Pre-order fields on a variation, inside the Variations tab."},{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-3.png?rev=3721271","caption":"Pre-order label, release date and Pre-order button on the product page."},{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-4.png?rev=3721271","caption":"Block-based cart showing the Ships on date under a pre-order item."},{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-5.png?rev=3721271","caption":"The closed message on a product whose cutoff has passed."},{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-6.png?rev=3721271","caption":"Settings under WooCommerce &gt; Settings &gt; Products &gt; Pre-order dates."},{"src":"https:\/\/ps.w.org\/bitnary-preorder-dates-for-woocommerce\/assets\/screenshot-7.png?rev=3721271","caption":"The Pre-orders screen under the WooCommerce menu."}],"raw_content":"<!--section=description-->\n<p>Bitnary Preorder Dates for WooCommerce adds a pre-order mode to simple products and to individual\nproduct variations, with two independent dates: the cutoff (when the store stops accepting\norders) and the release (when the product ships or becomes available).<\/p>\n\n<p>Two dates let a store say \"we take orders until the 20th, and it ships on the 30th\": a batch\ncutoff followed by a shared release.<\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=x3bJ_zw5FQc<\/p>\n\n<p>While a product is in pre-order and before its cutoff, it is purchasable even if your normal\nstock settings would otherwise say no (out of stock, zero quantity, no backorders). After the\ncutoff, the product stops being purchasable everywhere WooCommerce checks that, including the\nclassic cart and the cart and checkout blocks (Store API). After the release date, pre-order is\ncleared automatically and the product goes back to behaving like any other product.<\/p>\n\n<p>What the free version does:<\/p>\n\n<ul>\n<li>Per-product and per-variation pre-order toggle, with a cutoff date\/time and a release\ndate\/time, in your store's timezone.<\/li>\n<li>Purchasable before the cutoff regardless of normal stock rules; blocked after the cutoff, on\nthe product page, classic add-to-cart, and the Store API used by the cart\/checkout blocks.<\/li>\n<li>Automatic cleanup after the release date (checked when the product is read, and once a day by\nWP-Cron as a backstop).<\/li>\n<li>\"Pre-order\" label on the product page and in shop listings, with the ship and cutoff dates;\n\"Pre-order\" button text; \"Pre-orders closed\" message once the cutoff passes.<\/li>\n<li>Release date shown as a line item in the cart and checkout, including the cart\/checkout\nblocks, and saved on the order so it shows up in the order admin screen and in WooCommerce's\norder emails.<\/li>\n<li>Editable text and date format under WooCommerce &gt; Settings &gt; Products &gt; Pre-order dates.<\/li>\n<li>A Pre-orders screen under the WooCommerce menu listing every product and variation taking\norders or waiting to ship, ordered by whichever date comes next.<\/li>\n<li>Declared compatible with High-Performance Order Storage (HPOS) and with the cart\/checkout\nblocks.<\/li>\n<\/ul>\n\n<p>What the free version does not do (see the FAQ): it does not warn about or block a cart that\nmixes pre-order and in-stock items, it does not email the customer before the release date, and\nit has no way to move the dates of many products at once.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>The free version makes no external requests and collects no data.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/bitnary-preorder-dates-for-woocommerce<\/code>, or install\nit through the WordPress plugins screen.<\/li>\n<li>Activate the plugin. WooCommerce must already be installed and active.<\/li>\n<li>Edit a simple product and open the \"Pre-order\" tab in the Product data box, or edit a\nvariation and open the pre-order fields inside the Variations tab.<\/li>\n<li>Turn pre-order on, set when orders close and when the release ships.<\/li>\n<li>Optionally adjust the label, button text, closed message and date format under\nWooCommerce &gt; Settings &gt; Products &gt; Pre-order dates.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"why%20two%20dates%20instead%20of%20one%3F\"><h3>Why two dates instead of one?<\/h3><\/dt>\n<dd><p>One date only answers \"when is it available\". Two dates answer the two questions a shop\nactually needs during a pre-order window: when do we stop taking orders for this batch, and when\ndoes it ship. If your cutoff and release are the same day, just set them to the same value; the\nplugin does not require them to differ.<\/p><\/dd>\n<dt id=\"what%20happens%20exactly%20at%20the%20cutoff%3F\"><h3>What happens exactly at the cutoff?<\/h3><\/dt>\n<dd><p>The product stops being purchasable: <code>woocommerce_is_purchasable<\/code> and\n    woocommerce_variation_is_purchasable return false, the classic add-to-cart form and AJAX\nadd-to-cart are blocked, and adding the item through the Store API (used by the cart and\ncheckout blocks) is rejected with the message configured as \"Closed message\". The product page\nand shop listings show that message in place of the pre-order label.<\/p><\/dd>\n<dt id=\"what%20happens%20at%20the%20release%20date%3F\"><h3>What happens at the release date?<\/h3><\/dt>\n<dd><p>Pre-order is cleared: the enable flag, cutoff and release dates are removed from the product or\nvariation, and it goes back to being handled entirely by WooCommerce's normal stock and\npurchasability rules. This happens automatically the next time the product is read (viewed,\nloaded in the admin, queried) or, at the latest, the next time the daily cleanup runs.<\/p><\/dd>\n<dt id=\"what%20does%20the%20free%20version%20not%20do%3F\"><h3>What does the free version not do?<\/h3><\/dt>\n<dd><p>It does not stop a customer from adding a pre-order item and an in-stock item to the same cart,\nit does not email the customer a few days before the release date, and it has no way to move the\npre-order dates of many products at once. All three are part of the paid version, which can warn\nabout a mixed cart or block checkout until it is split, but does not split it into two orders.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20the%20paid%20version%3F\"><h3>Where do I get the paid version?<\/h3><\/dt>\n<dd><p>At https:\/\/preorder.bitnarydigital.com, also linked from WooCommerce &gt; Settings &gt; Products &gt;\nPre-order dates. The paid version is a separate download that replaces this plugin: deactivate\nthis one, then upload and activate the paid one. Your dates and settings carry over. It is sold\nthrough Freemius, which handles the licence key and its updates. Refunds are available for 14 days.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20high-performance%20order%20storage%20%28hpos%29%20and%20the%20cart%2Fcheckout%20blocks%3F\"><h3>Does this work with High-Performance Order Storage (HPOS) and the cart\/checkout blocks?<\/h3><\/dt>\n<dd><p>Yes. Both are declared compatible on <code>before_woocommerce_init<\/code> via\n    FeaturesUtil::declare_compatibility(), and the plugin only ever reads and writes product and\norder data through WooCommerce's own CRUD methods, never raw SQL.<\/p><\/dd>\n<dt id=\"does%20this%20send%20emails%20or%20texts%20to%20customers%20automatically%3F\"><h3>Does this send emails or texts to customers automatically?<\/h3><\/dt>\n<dd><p>No. The release date is added as a line on the cart, checkout, and order emails that WooCommerce\nalready sends; the plugin does not add its own separate emails or SMS.<\/p><\/dd>\n<dt id=\"where%20do%20i%20set%20the%20store%20timezone%20used%20for%20the%20dates%3F\"><h3>Where do I set the store timezone used for the dates?<\/h3><\/dt>\n<dd><p>Settings &gt; General &gt; Timezone in WordPress. The plugin reads and writes all dates using that\ntimezone (<code>wp_timezone()<\/code>).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>Fix: the pre-order button text reads the shop loop's product without\nre-declaring the filter's own parameter as a global.<\/li>\n<li>Change: \"Tested up to\" is declared in the readme only.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>New: \"Settings\" and \"Get Pro\" links in the plugins list, a short box about the\npaid version at the end of the Pre-orders screen, and one line about bulk\nediting under the dates in the product's Pre-order tab. No admin notices.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Change: the WordPress.org version no longer includes the Freemius SDK, so it\nmakes no external requests. The SDK now ships only with the paid version.\nThe paid version is bought on the plugin's website instead of from an Upgrade\nscreen inside the plugin.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Change: every function, class, hook, option and meta key now starts with\n\"pdfw\" instead of \"pdw\", which was short enough to clash with other plugins.\nSettings and product dates saved by earlier versions are moved over once, on\nthe first load after updating. Code hooking <code>pdw_loaded<\/code> should hook\n  pdfw_loaded now.<\/li>\n<li>Change: renamed to Bitnary Preorder Dates for WooCommerce. The plugin folder\nand text domain are now <code>bitnary-preorder-dates-for-woocommerce<\/code>.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New: licensing, the account screen and the upgrade path now run on the Freemius\nSDK, which is also what lets the paid build update itself. On WordPress.org the\nSDK runs in its compliant mode and collects nothing without opt-in.<\/li>\n<li>Note: this makes the download larger. The SDK is around four megabytes.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>New: a \"Pre-orders\" screen under the WooCommerce menu, listing every product\nand variation taking orders or waiting for its release, ordered by whichever\ndate comes next.<\/li>\n<li>New: the settings screen lists what the paid version adds. Two of those lines\nwere reworded to match what it will actually do.<\/li>\n<li>Dev: unit tests and a <code>pdw_loaded<\/code> action, so the paid add-on has a stable\nplace to hook into.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Fix: the two nonce values read on save are now sanitized before they are verified.<\/li>\n<li>Change: dropped the manual translation loader. WordPress.org loads translations on its own\nsince WordPress 4.6, so the call was doing nothing.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix: a variable product's variations did not show the pre-order label\/closed message or\nswap the add-to-cart button text when selected; the variation dropdown now carries its own\navailability text and button text, applied by a small enqueued script.<\/li>\n<li>Fix: a variation past its order cutoff showed the generic \"Out of stock\" text instead of the\nconfigured closed message.<\/li>\n<li>Fix: a variable product showed no pre-order indication in shop listings; it now shows the\nlabel of whichever variation is open for pre-order and ships soonest.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: pre-order toggle with cutoff and release dates for simple products and\nvariations, purchasability rules, front-end label and button text, cart\/checkout\/order line\nitem, settings page, HPOS and cart\/checkout blocks compatibility.<\/li>\n<\/ul>","raw_excerpt":"WooCommerce pre-orders with two dates: a cutoff when orders close and a release date when it ships. Per product or per variation.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/378403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=378403"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dvsouto"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=378403"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=378403"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=378403"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=378403"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=378403"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=378403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}