WP Manifestindependent plugin directory
manifest / content / presyo-menu-board

Presyo Menu Board

Free WordPress menu plugin for carinderias, cafes and bakeries: peso prices, sizes, one-tap sold-out tags, search and schema.org Menu JSON-LD.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/efraimray/presyo-menu-board/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

A free WordPress plugin that turns a carinderia, café or bakery menu into a searchable, mobile-friendly price list, with peso prices, sizes and one-click "Sold out" tags.

Live demo: https://efraimray.github.io/presyo-menu-board/demo/

Screenshot: add docs/screenshot.png (a capture of the demo) and reference it here.

New here? Read docs/BUILD-LOG.md for the languages used and how this was built.

Features

  • Menu Items + Sections: a private custom post type with title, description, featured image and drag order, grouped by a Sections taxonomy.
  • Prices that read right: ₱85, ₱92.50, ₱1,250; promo prices with the old price struck through; sizes such as Solo | 85 and Good for 3 | 240.
  • Today's Menu screen: every dish on one page with Available / Sold out / Hidden, plus "Mark everything available".
  • Block and shortcode: the dynamic Presyo Menu Board block or [presyo_menu], list or card layout, 1–3 columns.
  • Filter and search in the browser, no reload; the full menu still shows without JavaScript.
  • schema.org Menu JSON-LD (Menu → MenuSection → MenuItem → Offer), sold-out dishes marked OutOfStock.
  • Light: ~1.0 KB JS + ~1.6 KB CSS gzipped, loaded only where a menu appears. No jQuery, no CDN, no build step.
  • Print styles, uninstall cleanup, translation template (79 strings).

Tech Stack

Layer Technology
Server PHP 7.4+ on WordPress 6.3+ (post types, taxonomies, post meta, Settings API, admin-post, Block API v3)
Editor Vanilla JS against wp.blocks, wp.element, wp.components, wp.serverSideRender (no JSX, no bundler)
Front end Vanilla JS (filter/search), plain CSS with custom properties
SEO schema.org Menu JSON-LD

Folder Structure

presyo-menu-board/
├── presyo-menu-board.php        # Plugin header, constants, boot, activation
├── uninstall.php                # Removes options when the plugin is deleted
├── includes/
│   ├── class-presyo-format.php      # Pure helpers: prices, sizes, schema (no WP calls)
│   ├── class-presyo-post-types.php  # CPT, taxonomy, meta box, admin columns
│   ├── class-presyo-settings.php    # Settings API page
│   ├── class-presyo-daily.php       # Today's Menu screen + form handler
│   └── class-presyo-render.php      # Shortcode, block render, assets, JSON-LD
├── blocks/menu-board/
│   ├── block.json
│   └── editor.js
├── assets/css/presyo-menu.css
├── assets/js/presyo-menu.js
├── languages/presyo-menu-board.pot
├── tests/                       # php tests/run-tests.php, php tests/render-smoke.php
├── demo/index.html              # Interactive preview (GitHub Pages)
├── docs/                        # BUILD-LOG, TUTORIAL, DEPLOYMENT
├── readme.txt                   # WordPress.org format
├── CHANGELOG.md
├── publish-to-github.bat/.ps1 # One double-click GitHub publish (Windows)
└── LICENSE                      # GPL-2.0

Quick Start / Installation

  1. Download presyo-menu-board.zip from Releases.
  2. wp-admin → Plugins → Add New → Upload Plugin → choose the zip → Install Now → Activate.
  3. Presyo Menu → Sections: add Ulam, Kakanin, Drinks (or your own).
  4. Presyo Menu → Add New: add dishes with prices.
  5. Add the Presyo Menu Board block to a page (or paste [presyo_menu]).

From source: git clone https://github.com/EfraimRay/presyo-menu-board.git into wp-content/plugins/.

Usage

[presyo_menu]
[presyo_menu sections="drinks,kakanin" layout="cards" columns="3"]
[presyo_menu filter="no" search="no" updated="no" heading="h2"]
Attribute Values Default
sections comma-separated section slugs (order is kept) all
layout list, cards Settings
columns 1–3 Settings
filter, search, updated yes, no Settings
heading h2, h3, h4 h3

Daily routine: Presyo Menu → Today's Menu, tap Sold out on what ran out, Save.

Configuration

Presyo Menu → Settings: menu name (used in schema), currency symbol and ISO code, centavos (auto / never / always), default layout, columns, accent colour, show sold-out items, filter buttons, search box, "Updated" time, JSON-LD on/off.

Developers can change the schema:

add_filter( 'presyo_menu_schema', function ( $data ) {
    $data['inLanguage'] = 'fil';
    return $data;
} );

Deployment

On Windows, double-click publish-to-github.bat to create the GitHub repo, release and Pages site in one go. See docs/DEPLOYMENT.md for everything else: local testing with LocalWP or wp-env, building the zip, publishing with GitHub Desktop or git, GitHub Pages for the demo, and tagging releases.

Customization

  • Colours: set the accent in Settings, or override --presyo-accent in your theme CSS.
  • Markup classes are prefixed presyo- (for example .presyo-item.is-sold-out).
  • Add a badge: extend Presyo_Format::BADGES and Presyo_Post_Types::labels(), then style .presyo-badge--yourbadge.

Roadmap

  • v1.1: "Ulam of the day" scheduling (show dishes only on chosen weekdays) and a REST endpoint for chatbots.
  • v1.2: QR code generator for table tents that links to the menu page.
  • v1.3: Optional "Order on Messenger" button per item with a prefilled message.

Contributing

Issues and pull requests are welcome. Please run php -l on changed PHP files, php tests/run-tests.php and php tests/render-smoke.php before opening a PR, and follow the WordPress Coding Standards.

Requesting improvements

Open an issue and add the label claude-improve. The nightly showcase run picks up open claude-improve issues, implements them, bumps the version and publishes a release.

License

GPL-2.0-or-later. See LICENSE.

Author

Efraim Ray — web developer and AI automation specialist in Valencia City, Bukidnon, Philippines — https://www.efraimray.com/