WordPress admin guide¶
How ops uses the WordPress admin with the new headless stack.
Logging in¶
The login URL is hidden by the Easy Hide Login plugin. Use the bookmark, or ask an admin for the current path. If locked out, disable the plugin via SSH:
What lives where¶
| Task | In wp-admin | In the PWA |
|---|---|---|
| Add a product | ✅ Products → Add New | reads within 5 min (ISR cache) |
| Edit product price / description | ✅ Products → Edit | reads within 5 min |
| Change product category | ✅ Products → Edit | immediate on next fetch |
| View orders | ✅ Woo → Orders | (Phase 1.5 — admin dashboard inside PWA planned) |
| Fulfilment labels / tracking | ✅ ShipStation integration | tracking URL shows on /account/orders/* |
| Subscriptions | ✅ Woo → Subscriptions (Phase 2: Stripe Billing) | /subscribe tiles + portal link |
| Loyalty points balance | — | /account (uses wp_fruitplug_points_ledger) |
| Seasonal fruit calendar | ✅ Tools → Fruit Plug → Seasonal (Phase 1.5 UI) | greys-out unavailable fruits in the box builder |
| Fruit costs (COGS) | ✅ WooCommerce → Fruit Costs | feeds margin reports (Phase 4) |
Common ops tasks¶
Mark an order shipped¶
wp-admin → Woo → Orders → open order → change status to Completed. ShipStation gets notified; tracking number comes back into the order automatically.
Issue a refund¶
wp-admin → Woo → Orders → open order → Refund button. WooPayments refunds via Stripe. The customer's Plug Points for that order do not auto-reverse — for that, append a negative-delta row:
A2_PASSPHRASE=... python infra/a2/a2.py run '
wp db query "INSERT INTO wp_fruitplug_points_ledger
(user_id, order_id, delta, reason)
VALUES (<user>, <order>, -<points>, \"refund\")"'
Add a product to a box template¶
Templates live in two places that must be edited together in the same commit:
apps/web/lib/box-templates.ts(frontend)wp-plugin/fruitplug-api/includes/BoxTemplates.php(server-side validator)
Edit the eligible_slugs for the relevant section in both files, then redeploy (PWA + plugin). Phase 4 ships a wp-admin UI at WooCommerce → Box Templates that writes to a plugin table, eliminating the double-edit and the redeploy.
Set a fruit cost (COGS)¶
wp-admin → WooCommerce → Fruit Costs → enter the per-unit cost in the Cost column → Save. Leave blank to clear. Used for margin reports.
Check the site health¶
# From your terminal
curl -s https://fruitplug.co.uk/wp-json/fruitplug/v1/health | jq
curl -s https://dev.fruitplug.co.uk/healthz | jq
Both should return status: ok.
Things to NOT do in wp-admin¶
- Don't activate Elementor, KingComposer, or any page builder — we removed them deliberately; the PWA builds the frontend.
- Don't change the theme — it doesn't matter which theme is active (no public traffic hits wp-admin's frontend), but switching could trigger noisy admin notices.
- Don't edit products in bulk via the old CSV exporter — use the Woo native bulk editor or SSH wp-cli for scripted changes.
- Don't activate the Cost of Goods plugin again —
fruitplug-apinow ships its own page at WooCommerce → Fruit Costs. Enter per-product costs there.
Emergency contacts / references¶
- A2 Hosting support: A2 cPanel → Help
- Stripe: dashboard.stripe.com
- ShipStation: ship.shipstation.com
- DNS: GoDaddy account → fruitplug.co.uk DNS Management
- Full runbook for the Phase 0 cleanup: A2 host runbook