WordPress runs a large share of the web, which means it also carries a large share of the web's accumulated shortcuts: forty plugins where four would do, a theme edited directly so updates would overwrite the changes, and a database quietly growing to several gigabytes of data nobody needed to keep.

Custom themes and plugins

Built the way WordPress intends: child themes so updates remain safe, template hierarchy rather than conditional logic piled into one file, hooks and filters rather than edited core or plugin files, and custom post types with proper capability mapping.

For editorial teams, blocks and patterns beat page builders in the long run. A page builder gets you moving quickly and then owns your content — migrating away from one means unpicking markup from a proprietary format. Native blocks keep the content portable.

Performance and Core Web Vitals

Slow WordPress sites are slow for a small number of recurring reasons, and they are identifiable by measurement rather than assumption:

  • Plugin load. Every active plugin runs on every request unless scoped. Plugins loading assets sitewide for one page are extremely common.
  • Database bloat. Post revisions without limit, expired transients, orphaned metadata, and autoloaded options running into megabytes on every single request.
  • Unoptimised images. Full-resolution uploads served directly, no modern formats, no lazy loading.
  • No caching layer. Page caching, object caching via Redis, and a CDN in front — usually the largest single improvement available.
  • Render-blocking assets. A theme and plugins each loading their own jQuery, font and CSS payload.

Work starts with profiling on the real site, because the bottleneck is frequently not where it is assumed to be, and general optimisation advice applied blindly adds complexity without moving the numbers.

Security hardening and malware cleanup

Almost every WordPress compromise I have cleaned up entered through an out-of-date plugin or a weak administrator password. The clean-up is the visible part; the part that matters is closing the route in and confirming there is no persistence left behind.

Cleanup covers identifying the entry point, removing injected code and backdoors — including the ones written into the database and into innocuous-looking uploads — rotating every credential, and checking whether the site is flagged by Google Safe Browsing. Hardening afterwards: file permissions, disabled file editing, restricted admin access, a web application firewall, and above all a maintenance process that keeps plugins current.

Rescue and inherited sites

A frequent starting point: a business-critical site whose developer is unreachable, with no staging environment, changes made directly in production, and nobody confident enough to update anything.

The sequence is to get it into version control, build a staging environment, take a verified backup, and only then start changing things. Working out what has been customised in a site with no documentation is a real part of the effort, and it goes considerably faster with a safe place to experiment.

Multilingual, migrations and integrations

Multilingual sites with WPML or Polylang, migrations to or from WordPress with URL and SEO continuity preserved, and integration with CRMs, marketing platforms, payment providers and internal systems. Integration work follows the same principles as elsewhere — see APIs & Integrations for how failure cases are handled.

Common questions

Our site got hacked. What happens first?

Take the site offline or into maintenance mode, snapshot the current state for investigation, then find the entry point before cleaning anything — removing malware without closing the route in means it returns within days. After cleanup: rotate every credential including database and hosting, review user accounts for ones that should not exist, and check Google Safe Browsing status. Hardening and a maintenance process follow.

Can you make our site faster without rebuilding it?

Usually a substantial amount, yes. Caching, database cleanup, image optimisation and removing or scoping unnecessary plugins typically produce a large improvement without touching the theme. A rebuild only becomes the answer when the theme itself is the bottleneck — which does happen with heavily-loaded page builder themes.

Should we use a page builder?

For a site you expect to run for years, I would rather build with native blocks and patterns. Page builders are fast to start with and expensive to leave, because your content ends up stored in a proprietary format that has to be unpicked before you can move. If you already have one and it works, that is not sufficient reason to migrate — but I would not start a new build on one.

Is WordPress secure enough for a business site?

Yes, with maintenance. Core is well maintained and vulnerabilities are patched quickly; the risk sits in plugins and in sites nobody updates. A WordPress site kept current with a limited, well-chosen plugin set and sensible access control is fine for business use. One with thirty plugins last updated two years ago is a matter of time.

Do you work with WordPress and Drupal both?

Yes, and organisations often run both — WordPress for marketing and campaign sites, Drupal for a structured content platform. Having one person across both means integration between them and consistent practice on hosting, deployment and security, rather than two vendors with different conventions.

Want to talk this through?

Describe the problem in your own words — I will tell you what I would actually build, and what I would not.

Start a conversation