Hours, access and directions

The week
Hours in the admin menu holds one row per key. Seven weekday rows are created for you the first time the plugin is activated, with your site's own weekday names.
- Empty value = closed. A day with no row at all is printed closed too.
- Extra rows are yours to invent:
terrace, a kitchen, a bakery counter. Any key here is a key an Hours slip may strike. - The rows are printed in the order you give them.
The open status, and where it comes from
The sentence beside the header's dot — "Open until 17:00" — is derived and never typed. Change the hours, not the sentence.
With the services record present, until is the end of the contiguous run of services the door is currently inside, not the end of the current one. Between two services inside the same day it reads "Between services · back at 11:30"; before the first or after the last, "Closed · opens at 08:00" or "Closed · opens Tuesday 08:00".
With no clock to claim — a page built once and cached, and the /404 page — the status falls back to
the full-day sentence: "Open every day", or "Open Tuesday to Sunday" when the open days are one
unbroken run, or the days named one by one when they are not. A café shut on Thursdays never gets
"Tuesday to Sunday", because that sends somebody to a closed door.
A row whose value is not a pair of times — a sentence, a season — gives "See our hours" rather than a guess.
Access and arrival
Settings › Site details › Arrival holds eight sentences: bus, metro, parking, bikes, door, washroom, room, terrace. Transit and Access hold the one-clause summary each.
These are measurements somebody took at a door. They are true of the invented café in the demo and of nothing else. Re-measure every one of them for your own room before you launch — especially the door width and the washroom. An access fact that is wrong is worse than an access fact that is missing, because somebody travelled on it.
The house rules — dogs, laptops, terrace, children, allergens — are their own group of fields, and the laptop answer is printed per service, because the true answer is usually "yes, except at lunch".
Directions, and why there is no map
No map is ever embedded. Not Google, not OpenStreetMap, not a static tile image.
An embedded map is a third-party script, a set of cookies, a consent obligation, a request on every page load and — for the one thing a visitor actually wants, which is a route from where they are standing — a worse answer than their own phone gives.
Instead:
| Affordance | What it does |
|---|---|
| Get directions | The page's one filled action. Opens a routed link in the visitor's own map application, built from your coordinates — or, if you have given none, from the written address. |
The geo: handoff |
A second link in the RFC 5870 geo: scheme, which a phone hands straight to whatever map app the owner actually uses. |
| The address block | Selectable and copyable in one press, with a receipt that says selected when the browser has no clipboard, and copied when it does. With no script at all, the selectable box is the whole affordance. |
| The coordinates | Printed behind a disclosure — the address that survives a dead battery. |
Set Coordinates › Latitude and Longitude at Settings › Site details. Without them the directions link falls back to the written address, which is a worse route but never a broken link.
Structured data
With the companion plugin active the site prints a CafeOrCoffeeShop JSON-LD record in the page
head, on the front page and on the pages whose slugs are menu and visit. Three depths:
| Page | What it carries |
|---|---|
| Front page | Identity, cuisine, the price band, whether reservations are taken, the week, the dated overrides, and the one-clause access summary. |
/menu |
Identity plus the whole card. |
/visit |
Identity, the week, the dated overrides and the three measured access facts. |
Three deliberate omissions:
- No
url,sameAs,imageor@id. A theme cannot know your domain, and a fragment-only id would mint one business per route. - No rating of any kind. We ship no reviews, no stars and no invented social proof.
- No smoking flag. That is a law that differs by jurisdiction, not a fact a theme may assert.
And one rule with a reason: the allergen mark never appears as a dietary recommendation in the
structured data. N is a warning, and inverting a warning is the one error here that could put
somebody in hospital.
This is structured data, not an SEO feature. We make no claim about what any search engine will do with it.