[WordPress] 外掛分享: TillKit

首頁外掛目錄 › TillKit
全新外掛
安裝啟用
尚無評分
22 天前
最後更新
問題解決
WordPress 5.8+ PHP 7.4+ v1.0.3 上架:2026-06-23

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.0.3) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「TillKit」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

TillKit turns your WooCommerce store into a mobile point of sale. Open the app from any phone or tablet browser, log in with a PIN, and start selling.
Free Features

Mobile POS — Full-screen product grid with category filter chips, search by name / SKU, and cart drawer
Till management — Open and close a till with float tracking and variance report on close
Order history — Browse today’s orders with full item breakdown
Cash payments — Take cash sales and track change
PWA / Add to Home Screen — Install on Android (Chrome) or iOS (Safari) for a native app feel
2 staff members with PIN login — Cashier and Manager roles
1 active cart — Single cart per session
Offline mode — Products cached; pending orders sync on reconnect

Upgrade to Pro
TillKit Pro adds:

Unlimited staff and all roles (Supervisor, Scanner Only)
Up to 10 simultaneous carts
Card and custom payment methods
Full & partial refunds from Order History
Receipt emails sent to customers
Barcode Scanner tab (Quagga2) with scan log
Size Exchange with automatic stock adjustment on both sides
Reports — Shifts & Till Summaries, Product Sales, Exchange Log
Email Designer for branded receipts
Priority support

PWA Shell Architecture
TillKit serves its point-of-sale interface as a Progressive Web App (PWA). When a user visits the configured suite URL, the plugin intercepts the request via the template_redirect action hook, outputs a complete standalone HTML document, and calls exit(). WordPress never proceeds to wp_head() or wp_footer(), so the assets registered via wp_enqueue_script()/wp_enqueue_style() for this request have nothing to print into automatically — they’re printed directly instead, as described below.
The scripts and styles for the PWA shell are registered and enqueued through the standard wp_register_script()/wp_enqueue_script() and wp_register_style()/wp_enqueue_style() APIs (see tillkit_pwa_register_script() and tillkit_pwa_register_style() in tillkit-main.php). Because wp_head()/wp_footer() never run for this request, the enqueued assets are printed directly via wp_print_scripts()/wp_print_styles() with an explicit handle array, rather than relying on those hooks. This only prints the exact handles this plugin registered — not a foreign theme’s full head output — and runs safely after init, since registration happens on template_redirect. Dynamic values (the inline config block and theme-colour CSS override) are attached via wp_add_inline_script()/wp_add_inline_style(). All values are sanitized: URLs through esc_url(), version strings through esc_attr(), and inline JS values through esc_js().
This is the same pattern used by any WordPress plugin that serves a full-page application (e.g. login pages, OAuth callbacks, app shells) via template_redirect. The relevant PHPCS rules are suppressed with // phpcs:disable WordPress.WP.EnqueuedResources at the function level with this explanation inline.
WordPress Core File Usage
TillKit loads two sets of WordPress core admin helper files using require_once. These are standard WordPress patterns and are used as follows:

wp-admin/includes/upgrade.php — loaded in TillKit_Database methods that call dbDelta() to create or update database tables. This is the documented WordPress method for plugin schema management. The file is loaded immediately before dbDelta() is called.

wp-admin/includes/file.php, image.php, media.php — loaded in the upload_media REST API endpoint when processing logo uploads. These files expose wp_handle_upload(), wp_generate_attachment_metadata(), and media_handle_upload(), which are called immediately after loading. The files are only loaded if the functions are not already available.

In all cases, require_once is used (not require), the files are WordPress core files (not third-party), and a function from each file is called immediately after loading — as recommended in the WordPress plugin guidelines.
Third Party Libraries
TillKit includes two pre-built third-party libraries as minified bundles. Both are unmodified upstream releases. Source code, license, and build instructions are provided below.
QuaggaJS v0.12.1

Files: app/js/quagga.js, suite/js/quagga.js
Purpose: Camera-based barcode scanning (live video stream barcode decoding)
License: MIT
Original source: https://github.com/serratus/quaggaJS (archived)
Actively maintained fork: https://github.com/ericblade/quagga2
NPM package: https://www.npmjs.com/package/@ericblade/quagga2
License text: https://github.com/serratus/quaggaJS/blob/master/LICENSE

The included quagga.js is the unmodified dist/quagga.js output from the
upstream serratus/quaggaJS build at tag v0.12.1. To reproduce it from source:
git clone https://github.com/serratus/quaggaJS.git
cd quaggaJS
git checkout v0.12.1
npm install
npm run build
# Output at: dist/quagga.js
cp dist/quagga.js /path/to/plugin/app/js/quagga.js
cp dist/quagga.js /path/to/plugin/suite/js/quagga.js

Chart.js v4.5.1

File: admin/js/chart.umd.js
Purpose: Admin analytics charts
License: MIT
Source: https://github.com/chartjs/Chart.js
License file: https://github.com/chartjs/Chart.js/blob/master/LICENSE.md

The minified file is the unmodified output of the Chart.js build. To reproduce it:
npm install [email protected]
# Copy node_modules/chart.js/dist/chart.umd.js to admin/js/chart.umd.js

Or download directly: https://github.com/chartjs/Chart.js/releases/tag/v4.5.1
Source Code and Build Tools
Plugin Source Files (no build step required)
All TillKit JavaScript files are plain, unminified, human-readable source files included directly in the plugin package. No compiler, bundler, or transpiler is used for plugin code.

suite/js/app.js — App bootstrap, authentication, navigation
suite/js/pos.js — POS product grid, category chips, search
suite/js/cart.js — Cart drawer, multi-cart management
suite/js/scanner.js — Barcode scanner tab (Quagga2 wrapper)
suite/js/history.js — Order history, refunds
suite/js/exchange.js — Size exchange workflow
suite/js/store.js — Store/product management tab
suite/js/sw.js — Service Worker (offline cache, sync queue)
admin/js/tillkit-admin.js — WordPress admin panel

To modify these files: edit them directly. No compilation step is needed. If you change sw.js or any file that may be cached, increment the CACHE_VERSION constant at the top of sw.js to bust the service worker cache.
Third-Party Libraries
Two third-party libraries are included as pre-built minified bundles. They are compiled by their own upstream build systems — not by this plugin. Instructions for reproducing each bundle from source are provided below.
QuaggaJS v0.12.1 — suite/js/quagga.js, app/js/quagga.js

Purpose: Barcode scanning via camera feed
License: MIT
Upstream source: https://github.com/serratus/quaggaJS
NPM package: quagga (note: the actively maintained fork is @ericblade/quagga2 at https://github.com/ericblade/quagga2)

To regenerate quagga.js from source:
git clone https://github.com/serratus/quaggaJS.git
cd quaggaJS
npm install
npm run build
# Output: dist/quagga.js

Copy dist/quagga.js to both suite/js/quagga.js and app/js/quagga.js.
Chart.js v4.5.1 — admin/js/chart.umd.js

Purpose: Analytics charts on the admin Reports page
License: MIT
Upstream source: https://github.com/chartjs/Chart.js

To regenerate chart.umd.js from source:
npm install [email protected]
# Output: node_modules/chart.js/dist/chart.umd.js

Copy node_modules/chart.js/dist/chart.umd.js to admin/js/chart.umd.js.
Alternatively, download the file directly from the Chart.js CDN or GitHub release:
https://github.com/chartjs/Chart.js/releases/tag/v4.5.1
Summary
No custom build pipeline exists for this plugin. Future developers only need a text editor to modify plugin source files. The two minified files above are unmodified upstream releases and can be updated by following the steps above.

延伸相關外掛

文章
Filter
Mastodon