EvensongChurch WordPress Theme
The church year, computed: the site knows it is Lent because it worked out when Easter is.
Open live preview ↗
Overview
Who it is for
Evensong is for a parish church — a building with a Sunday pattern, a churchyard, a wedding enquiry every few weeks and one person doing the website in the evenings. It is not a conference-style “modern church” template with a hero video and a giving button above the fold. It assumes the visitor is either looking up a service time or working out whether they would be conspicuous if they came.
The church year, computed
Church websites rot in a particular way: somebody sets one up in a good week, types the service times onto a page, and two years later it still advertises a carol service on a Thursday that has been and gone. This theme is built so the parts most likely to rot cannot.
Everything follows from one calculation. The date of Easter is computed from first principles using the anonymous Gregorian algorithm; every moveable feast in the Western calendar is a fixed offset from it; Advent is pinned to Christmas; and the eleven seasons are the spans in between, built end to end so they cover the year with no gap and no overlap. From that the site knows what season today is, how far through it we are, what colour that season is, and which services fall on the coming Sunday.
Nobody sets the colour. In Lent the site is violet because it is Lent. On Easter morning it is white and gold, and it changed overnight with nobody logged in. It will still be right in 2043. The Customizer lets a parish say what each of the four liturgical colours looks like — a good many use Sarum blue in Advent rather than violet — but there is nowhere to set which season it is, because that is not an opinion.
PHP’s own easter_date() is deliberately not used: it belongs to the optional calendar extension, which is not compiled in on every host, and on 32-bit builds it overflows outside 1970–2037. The implementation here is tested against published Easter dates including both extremes — 22 March, the earliest Easter can fall, and 25 April, the latest — and against every day of a forty-year run to prove the seasons stay contiguous.
The pattern, not a list
Services are stored as a pattern rather than as dates: every week on a given day, once a month on the second Wednesday, one date only, and optionally only within one season. The site runs that pattern forward against the church year to produce what is on. A Lent compline appears in February and disappears at Easter without anyone publishing and unpublishing it; midnight mass surfaces once a year on its own.
A ground of dyed cloth
A church’s colour is not paint on a wall — it is cloth, something that gets changed when the season changes. So the background is a GPU-rendered hanging in the season’s own colour: folds as a height field, the surface normal taken from that field’s derivative rather than invented separately, wrapped diffuse because cloth is thin and scatters light through itself, a grazing-angle sheen, and cavity occlusion in the bottom of each fold.
The band of colour measures itself against the page. It begins below the masthead and has faded before the first line of content, both edges read from the real layout rather than guessed from the viewport — so a template whose heading sits high gets a shorter band instead of a title nobody can read. Every piece of text in the theme was checked against the pixels actually painted behind it, not against a nominal background colour.
Degrades, and stays informative
One full-screen fragment shader, no textures, no post-processing. The theme measures its own frame time on the median rather than the mean and steps down through lower render resolutions one rung at a time; at the bottom of the ladder it stops animating but leaves the last frame on screen, because the colour is information. With prefers-reduced-motion it paints one still frame and never starts a loop. Without WebGL2 the page renders on plain stone and nothing else changes.
What is in the box
- Services — weekly, monthly-by-weekday, or one date, optionally restricted to a season.
- Occasions — weddings, baptisms and funerals: who to speak to, how far ahead, and what it costs. The pages people actually arrive for.
- People — clergy, wardens and staff, with a monogram fallback that ignores titles, so “The Revd Canon Alice Ferrers” gives AF rather than TR.
No page builder, no ACF, no build step, and no third-party JavaScript. The two variable fonts are under the SIL Open Font License and are self-hosted, so reading a parish’s service times does not report the reader to anyone.
What's included
- Full theme source — every template, style sheet & script
- One-click demo importer (idempotent, no page builder)
- Live Customizer controls for copy, colours & content
- Translation-ready .pot file + RTL stylesheet
- HTML documentation + a CHANGELOG file
- Lifetime updates + 6 months support (renewable)
Specifications
| WordPress | 5.6 – 7.0 |
|---|---|
| PHP | 8.0 – 8.3 |
| Browsers | Chrome, Firefox, Safari, Edge (latest) |
| Layout | Fully responsive, mobile → desktop |
| Localization | Translation-ready · RTL included |
| Accessibility | Keyboard-navigable · prefers-reduced-motion |
| Page builder | Not required — native Customizer |
| License | GNU GPL v2 · single-site commercial |
Release
The complete, dated version history ships in the theme’s CHANGELOG file. Every purchase includes lifetime access to future updates.