WordPress:
themes & plugins
from scratch

The site is built around what it carries: the model, the fields, the blocks, the roles, the languages. After that your team edits it without me — because a site people are afraid to touch stops being true fast.

36 projects
tagged in the archive
No page builder
the editor, configured instead

One platform, two different jobs

  1. A site, not a shop

    Publishing, with a content model behind it. Corporate sites, catalogues that take no payment, anything where the work is keeping information right rather than moving stock. That is the half this page is about.

  2. The shop is the next page along

    WooCommerce turns the same installation into a shop. That is a different conversation with different decisions inside it, and it has a page of its own. Everything about selling is settled there.

What the editor can change without me

You are not buying the site on launch day; you are buying the site a year later, when the person editing it is not a developer. Five things decide whether that purchase was a good one.

  1. Things, not pages

    Post types and taxonomies set up for what the business actually lists: rooms, staff, models, cases. The addresses then follow from the model rather than from a menu somebody dragged into order. Stretching a model over a pile of finished pages later means rewriting every address on the site.

  2. Fields that cannot be broken

    Structured content lives in fields and the template draws it. Not pasted into the body as a lump of formatted markup — which is how it usually arrives. The version that survives contact with a colleague is the one where correcting a phone number cannot take the layout with it.

  3. Every choice already fits the design

    The editor narrowed to the design: the type sizes the design has and no others, the palette and nothing beside it, custom pickers switched off. The harder half is making the editor look like the site itself — it draws from its own hardcoded values rather than from the theme, and rewiring that is hand work.

  4. Publishing without the keys to everything

    Roles per job: somebody who publishes and nothing else, somebody who edits their own drafts and nothing else. Capabilities laid out one by one — not a single administrator login going round the office until nobody can say who has it.

  5. Undo that reaches the fields

    Undo covers the whole page, not the body text alone. Meta is not kept in a revision until somebody puts it there by hand. The moment structured content leaves the body, the editor loses the history of exactly what was just saved — and that is found out on the day the history is needed.

A page builder is the right answer for a site that will be replaced within the year. It is the wrong one for anything that has to be edited by somebody who did not build it: it moves the layout into the database, where it cannot be read, compared against last month, or changed everywhere at once.

Written, not bought

  • A parent theme carrying what every site needs, a child theme carrying only this one
  • Templates written against the content model, not against a demo import
  • Editor styles built from the same variables as the front end, not approximated
  • Setting names treated as a contract with the database: renaming one orphans every saved value
  • Only the components the site actually uses compiled into the stylesheet
  • The build overwrites the stylesheet and cannot touch the theme's own code

One source, many languages

  • One English source, translated at request time rather than duplicated per language
  • The translator sees a sentence, not a template
  • Strings that are real text in the page, because one assembled in JavaScript is never offered to the translator
  • Counts printed through a plural form, so they stay grammatical in a language that has three of them
  • Indexation, hreflang and which version answers a query — handed to the SEO page

Writing one, and not installing one

Most WordPress trouble arrives as a plugin somebody installed to solve a five-minute problem. Four decisions are worth paying somebody to make, and the first of them is usually the decision not to install anything.

  1. Code that outlives the theme

    Anything that is not presentation goes into a site plugin rather than into the theme: post types, meta, shortcodes, hooks. Change the theme after that and the site keeps its content model rather than losing half of it on the way out.

  2. A dependency is a decision

    Every plugin installed is somebody else's release schedule and somebody else's security record, taken on without a conversation. Two hundred lines written here are usually cheaper to live with than thirty thousand installed. Not always, though — forms, backups and payment gateways are where they plainly are not.

  3. Where two plugins meet

    Plugins load in directory order, so one can start before the constants it depends on exist. The fix is to defer the whole include pass to a hook rather than run it as the file is read. A text domain fails the same way: load it after the post types register and every label in the admin comes out in English.

  4. An admin screen for the job

    A metabox that checks its nonce, checks the capability, and returns early on an autosave, touching nothing. Skip the third and you get half-saved posts — and nobody ever blames the metabox.

Keeping plugins patched, and keeping one compromised plugin from reading its neighbour, is server work. It is written down on the DevOps page. What is settled here is which plugins exist at all, and that is the cheaper half to get right.

Everything adjacent is covered too

Four things a WordPress project needs that this page does not sell. Knowing which they are is usually how you find out you already have two of them and need not buy either again.

  1. Search is a different trade

    What a site is found for, and why it is not, is a whole practice with its own page. Nothing here is sold as search-ready. A page that claims that is usually claiming it about a sitemap.

  2. The server is not the site

    Hosting, backups, staging, certificates, monitoring, patching, and moving a site between hosts or database versions. All of it decides whether the site is up, and none of it is decided on this page.

  3. The selling half of a shop

    Catalogue, payment, delivery, stock and the feeds that carry products elsewhere. The platform is the same one; the decisions are not, and they are set out on the page that covers them.

  4. Copy at volume is a job

    I write the brief for a page — what it is for, what question it answers, what has to be on it. Somebody who writes for a living then writes it. Writing at volume is full-time work and it is not mine.

A site nobody dares update

The site works, the person who built it has gone, and the update notice has been ignored long enough that nobody remembers what it would break. Four things get looked at before anything is touched.

  1. Read it before touching it

    Which plugins are doing real work and which are dormant. What was edited in place, and what the content model turns out to be once the pages are read rather than counted. The quote comes after that, not before it.

  2. A theme edited in place

    The commonest inheritance of all: a marketplace theme with changes made straight into its own files. Every update erases the work, so everybody learned to stop updating. The way out is a child theme, taken one file at a time — a template that overrides another can be added and removed without disturbing what sits underneath.

  3. Getting off a builder

    The layout lives in the database as the builder's own markup. That is the reason the site cannot leave it. The exit is a template that draws the same page from fields, so the content outlasts the tool that formatted it.

  4. The content comes across

    Posts, terms, media, addresses, and the redirects that keep the old addresses working. The rebuild is the cheap half and the content audit is the expensive one. Nobody discovers that until they are already inside it.

A site that has actually been broken into is recovery work and sits with the server; template-level search faults sit with search. A rebuild is not the only answer either. On a site whose theme was never edited it is usually the wrong one, and saying so costs an afternoon rather than a quarter.

Before you write in

Yes, and that is what the fields are for. Copy goes into a field the template draws, so changing a price or an address cannot move the layout. The choices that would break the design are not offered in the editor at all.

If the site takes money, start with the online store page. If it publishes rather than sells, this is the right page. A shop can be added to it later without starting again.

Not always, and the answer comes out of reading it rather than out of a preference. Where the theme was never edited in place and the content already sits in fields, the work is usually a child theme and a set of templates. Where the layout lives inside a builder, more of it has to move.

For a site you expect to replace within the year, yes, and plainly so. The bill arrives in the second year, when a change the business needs turns out to sit behind a settings panel that does not offer it. The way through is then to edit files the next update will overwrite.

I will not build a new site inside one, and I will gladly take an existing site off one. What a builder stores is not your content but its own arrangement of it, which is the part that cannot travel. The content itself always can.

The templates, the theme and the site plugin are mine, and the boundaries above say where that stops. The project pages in the archive name who did what on each one, including the parts that were not mine. Read two of them before you decide anything.

Yes. This site runs from one English source translated at request time, which is why an editor translates a sentence instead of maintaining a second template. Which language version a search engine chooses to show is a search question, and it is answered on the SEO page.

Per project, and quoted once the site and its content model have been looked at. There is no ladder of packages here. Until somebody has counted what actually has to be modelled, a figure is a guess with a currency sign on it.

Fill in the brief

The address of the site if there is one. The one thing the people who will edit it need to be able to change without asking, and whether anybody is already working on it. If the answer turns out to be that it does not need rebuilding, that is what you will be told.

    What has to be on it

    Who changes the text after launch

    The site you have now