🛠 Free Tools & AI Utilities ↗

Get in touch

Tell us a little about your project and we'll follow up by email with licensing and download details.

FettlePlumber WordPress Theme

The trades site that tells you the price, and the calculator that tells you why your radiators will not work on a heat pump.

fettle.kilnwp.com LIVE
Fettle Open live preview ↗

Overview

Who it is for

A heating and plumbing engineer — the kind of business that is two vans and a mobile number. Its website has to do two things: say what it costs to get somebody through the door, and prove they know what they are talking about. Fettle computes both rather than typing them.

There is no price field in this theme

Trades websites do not carry prices. The reason given is that every job is different, and that is true of the whole job but not of its parts: an hourly rate is not different every time, and whether Saturday costs more is not different every time. It is the single thing people most want to know before they ring.

So a job carries its labour hours, its materials at cost, and whether it needs a second pair of hands. Everything the visitor sees about money is worked out from those and one rate card in the Customizer — the weekday, evening, Saturday, Sunday and emergency prices side by side on every job page, with the whole breakdown underneath. Put the hourly rate up and every figure on the site moves the same day, including the admin columns.

Three details it is careful about, because getting them wrong is how a quote becomes an argument on the doorstep. The out-of-hours multiplier applies to labour only — a tap does not cost more on a Sunday, and charging the multiplier on the whole invoice is the quiet way weekend work gets overcharged. The first hour is charged whole and includes the visit, because quoting a callout and a full first hour is charging twice for the same hour. And VAT is shown separately and only when the business is actually registered.

What size radiator does this room need?

The real steady-state calculation. Fabric loss is the U-value of every surface facing outdoors times its area times the temperature difference; ventilation loss is the room’s volume times its air change rate times the same difference times the heat capacity of air.

Two things it gets right that shortcuts do not. The window comes out of the wall rather than being added to it — counting both at full area is the commonest arithmetic error in this calculation and it always inflates the answer. And a wall between two rooms held at the same temperature carries no load at all however large it is, which is why a mid-terrace bedroom needs so much less than the same room on a corner.

And then the part nobody is told

Radiators are rated with the water 50 K above the room. Run the same radiator on a heat pump flowing at 45 and the difference is 22.5 K, and output falls with that difference to the power 1.3 — so it gives about a third of what the box said. Nothing is broken; it is the same radiator obeying the same physics. Change the system in the calculator and the answer changes accordingly.

The exponent was checked against published manufacturer correction tables at five points from 20 to 60 K before anything was built on it, along with invariants no implementation can argue with: no temperature difference must mean no loss, doubling the difference must double the loss, newer construction must never lose more, and glazing a whole wall must leave no opaque wall area behind.

A ground that is doing arithmetic

The background is an actual solve of the heat equation on a 256 by 256 grid, stepped on the GPU with ping-ponged floating point textures, with the jobs on the page as its heat sources. Warmth genuinely conducts outward, meets and merges. It does not claim to model anybody’s house. Where a browser cannot give it a float render target it is simply not drawn and the page sits on plain paper.

The hottest value the field can reach sets the contrast budget for the whole design, solved backwards from the requirement that the ink still reaches 4.5:1 against it. Verified by photographing the framebuffer with all text forced transparent: 699 text nodes across eight screens, none below AA.

What is not in it

No page builder, no ACF, no build step, no third-party JavaScript, and no photographs. A job without a cover image gets no image element at all rather than a placeholder announcing there is no picture — a trades site with stock photographs of somebody else’s boiler cupboard is worse than one with none.

Classic PHP theme, no build step. Job post type carrying labour hours, materials at cost and a two-person flag; every price on the site — and in the admin columns — computed from those and a single Customizer rate card, with the out-of-hours multiplier applied to labour only, the first hour charged whole, and VAT shown separately and only when registered. There is no price field. Steady-state heat loss calculator: fabric loss as the sum of U x A x dT with standard assumed U-values across seven construction bands, ventilation loss as 0.335 x ACH x volume x dT, window area subtracted from wall area rather than added to it, internal surfaces excluded. Radiator output corrected by the BS EN 442 index of 1.3, validated against published manufacturer correction tables at 20/30/40/50/60 K and against six physical invariants. Raw WebGL2 heat-equation solve on a 256x256 R16F ping-pong texture pair with r fixed at 0.2 for stability, insulated boundaries by clamped sampling, cover-fit display so diffusion stays isotropic, and emitters derived from the page content. Contrast budget solved backwards from the shader's hottest value and verified against painted pixels (699 nodes, 0 below AA). No third-party JavaScript. Two self-hosted OFL families. No photographs.

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

WordPress5.6 – 7.0
PHP8.0 – 8.3
BrowsersChrome, Firefox, Safari, Edge (latest)
LayoutFully responsive, mobile → desktop
LocalizationTranslation-ready · RTL included
AccessibilityKeyboard-navigable · prefers-reduced-motion
Page builderNot required — native Customizer
LicenseGNU GPL v2 · single-site commercial

Release

v1.1.2 The trades site that tells you the price, and the calculator that tells you why your radiators will not work on a heat pump.

The complete, dated version history ships in the theme’s CHANGELOG file. Every purchase includes lifetime access to future updates.

LAGO Featured

LAGO

$79

An architectural WordPress theme for custom pool builders, renovation studios and considered outdoor living.

Architecture Local business
View →
Tumbler Featured

Tumbler

$69

Scroll and the lock comes apart: the housing lifts, the pins set one service at a time, the plug turns at the phone number.

Bold Booking
View →
Clearcoat Featured

Clearcoat

$69

Drag across a live paint panel: swirls polish out to a mirror and water beads on the coat — then price the job for your car.

Automotive Bold
View →