BOGO Select for WooCommerce 1.1.0
Install: download bogo-select-1.1.0.zip below, then in WordPress go to Plugins → Add New → Upload Plugin.
[1.1.0] — 2026-07-30
Addresses the findings of the Codex repository review (CODEX-REVIEW.md); the
responses are recorded in CODEX-REVIEW-RESPONSE.md.
Added
- Searchable, paged gift chooser. Options are fetched a page at a time (24 by
default) with a name/SKU search box and Previous/Next controls, over a new
publicbogo_select_choicesAJAX endpoint. Both Get scopes are paged, so a
Select Products list of any length is bounded too. (F-02) bogo_select_all_products_limitis now the page size rather than a hard cap
on the All Products scope. The filter name is unchanged.- WooCommerce dependency enforcement: a
Requires Plugins: woocommerceheader
and an activation guard that refuses activation without WooCommerce 7.0 or
later. (F-05) - PHPUnit unit suite (
tests/) covering settings normalization, qualification,
eligibility, availability, chooser paging, and cart validation, plus a GitHub
Actions workflow running it on PHP 7.4–8.3. (F-06)
Fixed
- A gift is no longer kept when its stock runs out. Availability was only
rechecked when the earned quantity changed, so a cart whose quantity was stable
kept an unbuyable gift until checkout failed. It is now rechecked on every
validation pass, and onwoocommerce_cart_item_restored. (F-01) - Paid and free copies of one product no longer over-commit its stock.
Availability counts total cart demand against the stock-managed product ID, so 2
paid plus 2 free of a product with 3 in stock is refused up front. (F-01) - Products past the fiftieth are reachable again. All Products previously
offered only the first 50 simple products by title, with no way to reach the
rest. (F-02) - Changing your gift can no longer leave you with none. The replacement is
added before the previous gift is removed; if the add is refused — by core stock
validation or a third-partywoocommerce_add_to_cart_validationcallback — the
original gift stays in the cart and the reason is reported. (F-03) - Duplicate free lines are normalised. Validation enumerates every flagged
line, keeps one, and removes the rest; previously only the first was inspected
while pricing zeroed them all. (F-04) - Multi-unit gift subtotals show the right figure. The subtotal column struck
through one unit's price; eight $10 gifts now strike through $80, not $10. (F-07) - Product variations are rejected as gifts by both the eligibility check and
the settings sanitizer, matching the documented "simple products only" rule. (F-08)
Changed
- The unused random
bogo_select_stampcart item datum was removed. It was never
validated, and being random it prevented identical gift lines from merging.
Re-validation derives everything from current settings and current cart state;
BRIEF.md§4.3 now describes that instead of the unimplemented
_bogo_select_token. (F-04) - Release archives exclude
tests/,vendor/,composer.*,phpunit.xml.dist,
and.github/. - Documentation corrected where it had drifted from the code: cart flag key,
AJAX endpoint security model, notice placement on cart/checkout, and the
WooCommerce dependency lifecycle. New decisions D-011, D-012, and D-013 record
the design choices behind the fixes above. (F-08)