Skip to content

Manual Ticket Picker Grid

The Manual Ticket Picker Grid provides participants with an interactive, responsive frontend interface on the single competition page to browse and select their preferred lucky numbers.

In the admin competition list, competitions using this mode display the blue U (User Choice) badge in the Generation column.


The ticket picker is configured per competition in the WordPress Admin product editor under Product Data > Competition > Card 3: Numbering & Allocation:

Numbering and Allocation Settings

  1. Check Use pick numbers (_lottery_use_pick_numbers) to activate numerical ticket pools.
  2. Leave Randomly pick numbers (_lottery_pick_numbers_random) UNCHECKED. When unchecked, the plugin renders the interactive visual grid instead of bypassing it for automatic random assignment.
  3. Save or update the competition product.

For competitions with hundreds or thousands of tickets, loading every number into a single flat grid can impact page performance and mobile usability. Quantum Competitions provides built-in batching options:

Tabbed Batches (_lottery_pick_number_use_tabs)

Section titled “Tabbed Batches (_lottery_pick_number_use_tabs)”
  • Use tabs for ticket numbers: Splits the total ticket pool into organized tabbed containers (e.g. 1–100, 101–200, 201–300).
  • Tickets per tab (_lottery_pick_number_tab_qty): Defines the quantity of tickets displayed per tab (default: 100).
  • Customers can click tab buttons to quickly jump between number blocks without endless vertical scrolling.
  • Use alphabet for ticket numbers (_lottery_pick_number_alphabet): Transforms numeric tickets into letters and numbers (e.g., A1 through Z26).
  • Use ranges for ticket numbers (_lottery_pick_number_use_ranges): Configures custom starting offsets and optional ticket prefixes.

Every ticket pill rendered in the grid (<li class="tn ...">) dynamically reflects its real-time status:

Visual State CSS Class Tooltip / Description Behavior
Available .tn Default Clickable. Clicking adds the ticket to the current selection.
Selected .tn.active Selected Highlighted in primary theme color, queued for add-to-cart.
In Cart .tn.in_cart Already in your cart! Currently held in the buyer’s own cart session.
Reserved .tn.reserved Reserved! Temporarily locked in another customer’s active checkout session.
Sold / Taken .tn.taken Sold! Permanently purchased and locked out from future selection.

To eliminate double-booking race conditions when multiple customers attempt to purchase the same lucky number simultaneously, Quantum Competitions provides a database-driven session reservation engine.

  1. When a customer adds ticket #42 to their cart, a lock record is inserted into the dedicated MySQL table {$wpdb->prefix}wc_lottery_pn_reserved (QCW_PN_RESERVED_TABLE).
  2. The record logs the competition ID, ticket number, customer session_key, and timestamp.
  3. For all other visitors, ticket #42 instantly becomes unselectable with the .reserved state.
  4. When the order is completed, the reserved entry is converted into a permanent log entry (wc_lottery_pn_log) and cleared from the reservation table.
  5. If the cart is emptied or checkout is abandoned, the reservation lock is automatically removed, returning the number to Available.

Configure cart reservation behavior under Competitions > Settings > Tickets & Entries:

  • Reserve ticket number when user puts it in cart (qcw_answers_reserved): Enable or disable the reservation lock mechanism.
  • Hold reserve tickets for n minutes (qcw_answers_reserved_minutes): The duration (in minutes) tickets remain locked in a customer’s cart before expiring (default: 5 minutes).
  • Show notice for reserving tickets (qcw_answers_reserved_notice): Displays a countdown or informative notice during checkout informing the customer of their hold window.

  • Lucky Dip Integration: Enable Show lucky dip button (qcw_use_lucky_dip) in settings to render a quick-select button above the grid. Customers who do not wish to pick manually can click Lucky Dip to auto-select random available tickets.
  • Question & Answers Validation: When skill questions (_lottery_use_answers) are enforced, customers must select an answer before adding their chosen grid tickets to the cart.