Menu Display
The Menu Display feature renders restaurant-style menus with a clean hierarchical structure: menu header, organized sections, and item rows. It is designed for dining establishments and any business that serves products organized into categorized menus.
Use the [pointless_pos_menu_display] shortcode to embed a menu on any WordPress page or post.
Rendering Structure
Menus follow a three-level hierarchy:
Menu (container)
Menu Header (title, subtitle, description)
Menu Sections
Section Header (title, subtitle)
Menu Items (rows)
Menu data and section data come from separate POS endpoints. The menu defines the structure, and each section provides its own content.
Section-Based Visibility
Each menu section controls which product fields are visible for its items. Visibility is determined by two conditions — both must be true for a field to render:
- The parent section has the corresponding
show*flag enabled - The item has a non-empty value for that field
Common visibility flags include:
| Flag | Controls |
|---|---|
showImage | Product image |
showDescription | Full product description |
showShortDescription | Short description blurb |
showTHC | THC percentage |
showCBD | CBD percentage |
showProof | Alcohol proof |
showGluten | Gluten information |
showMetaTags | Meta tags / keywords |
showInfo | Additional product info |
If a section enables a field but an item has no value for it, the field is omitted entirely — no placeholder text or empty space is reserved.
Display-Only vs Interactive Mode
Menus can operate in two modes:
- Display-only: Items are shown for reference. No add-to-cart buttons are rendered. Use this for publishing menus as informational content.
- Interactive: Add-to-cart buttons appear on items that have a valid barcode. Customers can add menu items directly to their cart.
Items without a barcode are never addable to cart, regardless of mode. No disabled buttons or broken controls are shown.
Item Ordering
- Items render in the exact order returned by your POS
- No re-sorting is applied
- Optional row numbering can be enabled via shortcode parameters — numbering resets per section and is visual only (does not affect cart behavior)
Cart Compatibility
Menu items use the same cart contract as catalog items. To be addable to cart, a menu item must have a valid barcode. Cart logic (quantity, pricing, session handling) is managed by the shared cart system — not by the menu rendering itself.
Missing Data Handling
The menu display handles missing data gracefully:
- If a field is enabled by the section but empty on an item, it is simply omitted
- If a section has no active items, the entire section is hidden
- If a menu cannot be resolved or fails to load, nothing is rendered — no broken markup or error text
Example Shortcode
[pointless_pos_menu_display menuId="5"]
Replace 5 with the ID of the menu you want to display from your POS system.