Skip to main content

Bundles can be purchased when child products are in draft status

When a bundle contains a child product with post_status = draft, the purchase still succeeds. Customers receive licenses for products that should be hidden.

Steps to Reproduce:

Β  1. Create Product A (publish) and Product B (draft)

Β  2. Create Bundle containing both A and B (publish)

Β  3. Purchase the bundle

Β  Expected: Checkout blocked or bundle unavailable (child is draft)

Β  Actual: Purchase succeeds, licenses issued for draft product

Impact: Customers can access products not yet released or intentionally hidden.

Technical Note: ProductVariation::isBundleChildrenInStock() validates stock but doesn't check post_status of child products.