1.7.0: shipping rule "Only" reserves a method, "Show" no longer does

Since 1.6.0 "Show" both whitelisted a method for its group and hid it from
everybody else. A group shown ordinary methods next to a free one therefore
took the ordinary ones away from every stranger, who was left with only the
free method. "Only" now carries the reservation; "Show" is just the group's
whitelist. Existing show rules are converted to only once on update so the
checkout does not change until the shop chooses.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
kristianwind
2026-10-02 12:28:45 +02:00
co-authored by Claude Code
parent 5875638f2c
commit 0793a1ee82
11 changed files with 129 additions and 37 deletions
+6 -3
View File
@@ -1,6 +1,6 @@
# Nolimit Discounts
Version 1.6.3 · a WooCommerce plugin · slug `woocommerce-email-discount-manager`
Version 1.7.0 · a WooCommerce plugin · slug `woocommerce-email-discount-manager`
Gives a customer a discount, and decides which shipping methods they may
choose, based on the email address they check out with.
@@ -29,11 +29,14 @@ address, then domain, then fragment.
A discount group can be given shipping rules, which is the half worth reading
twice because it decides what a stranger sees.
A method a group is told to **show** is *reserved* for that group. Customers
A method a group is set to **only** is *reserved* for that group. Customers
who match no group do not see it. Before 1.6.0 a method set up for approved
company addresses stayed on the checkout for everybody, so free delivery meant
for one customer could be chosen by anyone who found it — the bug that release
fixed.
fixed. **Show** is the weaker rule and reserves nothing: it offers the method
to the group and leaves everyone else alone. 1.6.0 made show do both, which
took ordinary methods away from strangers whenever they were listed beside a
free one; 1.7.0 split them and turned every old show rule into only.
The plugin never leaves a customer with no shipping method at all. If applying
the rules would empty the list, every method comes back.