Skill · Web development
WordPress development work I have been hired to do
This is the core of it. More than 2,400 paid development projects since 2015, rated 4.92 out of 5 by the clients who paid for them. Custom themes, custom plugins, WooCommerce, inherited codebases, broken sites, and the integrations that sit between WordPress and everything else.
A reviewer once said my "PHP code and CSS are well written and commented", which is the compliment I am proudest of, because it means the next developer could pick it up.
2,400+
Paid development projects delivered since 2015
4.92/5
Codeable rating across 2,523 rated projects
47
Properties running through a reporting platform I built and maintain
- Track record
- 2,400+ paid projects for 900+ clients, rated 4.92 out of 5 by the people who paid.
- Languages
- PHP, JavaScript, TypeScript, Python, SQL, HTML and CSS. React and Node.
- WordPress
- Custom themes and plugins, must-use plugins, ACF, REST API, WP-CLI, multisite, WooCommerce.
- Beyond WordPress
- Cloudflare Workers, Pages and D1, third-party API integrations in both directions.
- Working method
- Audit first, dry-run bulk changes, verify by reading data back, log everything.
- Engagement
- Contract, fixed-scope, emergency fix, white-label, or permanent.
What I am usually asked for
- Custom themes and child themes, block themes and classic
- Custom plugins and must-use plugins, including replacing plugins that have been abandoned
- WooCommerce: checkout changes, custom fees, approval workflows, subscriptions, fulfilment integrations
- Taking over code somebody else wrote, often with no documentation and no handover
- REST, WP-CLI and direct database automation for work that is too large to do by hand
- Third-party API integrations, in both directions
- Multisite: building, maintaining and migrating networks
- Work outside WordPress: React and TypeScript applications, Cloudflare Workers, D1
How I work
Audit before changing. On an inherited site I find out what is actually running, what version of everything, what has been hacked in, and what will break if I touch it.
Bulk operations get dry-run first, applied in a way that cannot half-complete, and verified by reading the data back afterwards. The verification is not optional, because a write can succeed while a cached response keeps serving the old value and makes it look like nothing happened.
And everything gets logged: what changed, which files, which database rows, what was deliberately left alone. If I disappeared tomorrow, the next developer could follow it.