Skip to content

BOGO Select for WooCommerce 1.1.0

Choose a tag to compare

@johnjanney johnjanney released this 31 Jul 01:34
· 102 commits to main since this release

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
    public bogo_select_choices AJAX endpoint. Both Get scopes are paged, so a
    Select Products list of any length is bounded too. (F-02)
  • bogo_select_all_products_limit is 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: woocommerce header
    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 on woocommerce_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-party woocommerce_add_to_cart_validation callback — 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_stamp cart 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)