What’s new in Praetor — the features, improvements and fixes in the current release.
Releases go out as soon as they’re ready. This page covers the current release, and everything below shipped to production.
Place Praetor from the block editor
Praetor has always been placed with shortcodes, which is a strange thing to ask of anyone on a modern WordPress: the editor has been block-based since 5.0 and the default theme since 6.0, so putting a product table on a page meant finding the shortcode block and typing into it.
There is now a Praetor block. Insert it, pick what it should show — product search, a product table, filters, the variation matrix, a saved list, opening hours, the quote basket, the trade registration form, the catalogue unlock form — and set that surface's options in the sidebar. The preview is the real thing, rendered by your site rather than an approximation drawn in the editor.
The list only offers what your site actually has. A surface whose module is switched off, or that is not part of your edition, does not appear — so nothing in the picker is something you cannot use.
Your existing shortcodes keep working exactly as they are. The block builds the same shortcode behind the scenes, which is deliberate: there is one implementation of every surface, so the block and the shortcode cannot drift into showing different things.
Tiered quantity pricing you can actually set up
Pro has advertised tiered quantity pricing for some time, and the rule editor never offered it — the pricing engine knew how to apply tiers and there was no way to create one. That is fixed.
A discount rule can now carry up to three quantity tiers: from ten take five per cent, from fifty take fifteen, from a hundred charge a flat unit price. The highest tier the quantity reaches wins, and below the lowest tier the normal price stands rather than a guessed one. Each tier can take a percentage, a fixed amount per unit, or set the unit price outright.
Three tiers is what the rule editor can ask for today; the engine reads more, so a rule built by the command line or brought in from another site keeps working.
Your customers' data requests now include Praetor
WordPress has built-in tools for the two requests a customer can make about their own data: send me a copy, and delete it. Until now Praetor took no part in them. A shop owner answering a request got an export that looked complete and quietly left out everything Praetor held, and a deletion left it in place.
Praetor 1.3.0 registers with both tools. An export now includes the extra addresses a customer asked to be copied on their order emails and the answers they gave to your checkout questions; with Pro it also covers back-in-stock alerts, saved lists, abandoned baskets, files they uploaded with an order, catalogue access they were granted, and quote requests.
Two things are deliberately kept, and the tool tells you so rather than pretending otherwise. Checkout answers stay on the order, because the order is a record you are required to keep — they go when the order goes, under your own retention settings. Quote requests are anonymised instead of deleted: the personal details are cleared and the record of what you offered, and for how much, survives.
Buy X, get Y free
Pro gains the seventh discount shape: buy a number of qualifying items and get one or more of them free. You set how many they have to buy and how many they get, and whether the free item is the cheapest qualifying thing in the basket or another of whatever they bought most of.
The gift arrives as its own basket line at no charge. If the basket stops qualifying — they remove something, or the item goes out of stock — the gift goes with it, while the shopper can still see it happen. If they take the gift out themselves it stays out, rather than reappearing on the next page.
This shape has been described on the discounts documentation page for some time and was not actually present in the software. It is now, and it is covered by tests that put real items in a real basket and check what the shopper is charged.
Fixes & improvements
- The advanced discounts health check used to report every discount family as available without checking. It now asks the rule editor's own list, so anything documented but not registered is reported as a problem.
Documents are printable HTML, and the code now says so
No change to anything you can see. Three comments inside Praetor described a PDF renderer in the Pro edition that has never existed — invoices, packing slips and credit notes are accessible printable HTML in both editions, which every browser saves as a PDF, and that is what every page on this site has always said. The comments have been corrected so the code agrees with the product.
Nothing in the free edition is held back
Praetor 1.1.7 removes the last places where the free edition described itself as a limited version of something else. None of it was a real limit — the caps went in September and nothing has been gated since — but the software still said otherwise in a handful of places, and saying it is enough to make it true for anyone reading.
The import screen previewed a configuration file and then showed an "Apply" button that could never be pressed. That button is gone: the screen shows what the file contains, and says so, without offering something it cannot do.
The setup checklist listed features that are not part of this build and marked them unavailable. It now lists the steps this build can actually do. A step whose module is simply switched off says so, and tells you to switch it on.
Several screens and help texts described a limit as belonging to "this edition" when the same number applies to both, and can be changed on your own site. They now say what the limit is, without the implication.
Fixes & improvements
- Invoices and packing slips download as documents again. They had been arriving as a blank page: the file was being sent in a format that broke its own stylesheet, so the browser rendered nothing.
- The free download contains no licensing code at all, rather than licensing code that never ran.
- Translations load the way WordPress loads them for every other directory plugin, which also removes a notice on WordPress 6.7 and newer.
The fast cart actually opens
The slide-out basket has never worked. Turning it on changed nothing: clicking a basket link went to the cart page exactly as it would with the feature switched off, and nothing ever slid out. Praetor 1.1.5 fixes it, and no setting needs changing — if you had it enabled, it starts working when you update.
Two separate faults, both in the same feature:
The panel's markup was written to the page *after* the script that drives it, so when the script ran there was nothing there to attach itself to and it stopped without a word. Every click it was supposed to intercept simply went where the link pointed.
Separately, "open the basket when something is added" was listening for the wrong announcement. WooCommerce has two add-to-cart buttons — the classic one and the newer block one — and they announce a successful add differently. Only the classic announcement was being heard, so on a block theme, which is what a new WordPress site uses, adding a product never opened the basket even once the first fault was fixed.
Fixes & improvements
- The fast cart panel opens when you click a basket link, and closes with Escape.
- Changing a quantity or removing a line in the panel updates the real basket.
- Adding a product from the shop opens the panel, on classic and block themes alike.
A hardening pass across the plugin
Praetor 1.1.4 is a maintenance release. It is a routine hardening pass over the parts of the plugin that decide who may see what — access policies, the REST endpoints, the catalogue filters and file uploads — together with the checks that keep those decisions honest as the code changes.
There is nothing to reconfigure, and no rule, policy or price behaves differently afterwards.
Fixes & improvements
- Security and reliability improvements throughout.
- A webhook endpoint must be a publicly reachable address; one pointing at the same machine or at a private network is refused when you save it.