WordPress theme customisation (if you must)

Categorised: WordPress Development
Posted by: David Foreman. Published: 18 June 2026. Updated: 10 July 2026

WordPress theme customisation: what you can actually do, and when to stop.

Most people who come to me with a WordPress site have either inherited someone else’s mess or bought an off-the-shelf theme and hit a wall. Either way, understanding what customisation can and cannot do will save you a lot of time, money, and late-night head-scratching.

I’ll say upfront: I build bespoke WordPress sites. That’s my thing. But this article is for people who want to get hands-on themselves, or at least understand what they are asking a developer to do. If things go sideways, you know where to find me.

Contents

Customisation vs development: there is a difference.

WordPress theme customisation means taking an existing theme and modifying it – changing colours, adjusting layouts, adding functionality, tweaking how content displays. You are working within a framework someone else built.

Theme development means building from scratch. When I build a site, I start with a barebones theme and write everything specifically for that project. No inherited structure, no dead code, no constraints imposed by a theme developer you have never met.

This distinction matters. When you customise, you inherit the quality – or lack of it – of the original theme. Every decision the theme developer made becomes your problem. Development gives you a clean slate, but it costs more and requires real skill to do properly.

Most people start with customisation because they already have a theme. The real question is how far you can push it before it starts pushing back.

Your customisation options: built-in vs code.

There are two routes to customising a WordPress theme.

Built-in customisation uses whatever options the theme developer has provided – the Customizer, theme options panels, the Site Editor for block themes. You are limited to what they decided to expose. Some themes are generous here. Many are not.

Code-based customisation involves writing or modifying CSS, PHP or template files to go beyond those options.

Broadly, customisation falls into four levels:

  • Cosmetic tweaks – colours, fonts, spacing. Low risk.
  • Layout modifications – restructuring how content displays on pages or archives. Medium risk.
  • Functional additions – adding new features or changing how existing ones behave. Higher risk.
  • Structural changes – fundamentally altering how the theme works, adding custom post types, modifying database queries, rebuilding templates. This is where DIY can get dangerous.

The further down that list you go, the more you need to know what you are doing.

The WordPress Customizer and Site Editor.

The Customizer gives you a live preview interface for theme settings. What you can actually change depends entirely on what the theme developer built in. Common options include the logo and site identity, colours and typography, header and footer layouts, menu locations, and widget areas.

For block themes, the Site Editor gives you more granular control – you can modify templates and template parts directly, which is genuinely useful. But it still operates within the constraints of block-based design.

The limitation with both tools is simple: you can only change what the theme allows you to change. If you want something the theme does not support, you need to go deeper.

Child themes: use one, every time.

If you modify a theme directly and that theme updates, your changes are gone. This is one of the most common mistakes I see, and it is entirely avoidable.

A child theme inherits everything from the parent theme but lets you override specific files and add custom code without touching the original. When the parent updates, your work stays intact.

Use a child theme whenever you are:

  • Adding custom CSS beyond what the Customizer provides
  • Modifying template files
  • Adding functions via functions.php
  • Making any change you want to survive a theme update

Setting one up means creating a new theme folder with a style.css that references the parent and a functions.php that enqueues the parent styles. The WordPress Developer Resources walk through the setup in detail.

One thing to be aware of: child themes protect you from overwritten files, but not from a parent theme that completely changes how something works on a major update. If you are on a stable, well-maintained theme, this is rarely an issue. If your theme gets irregular big updates, watch out.

CSS, PHP and template files.

CSS customisation is the most common and the safest. You can add custom CSS through the Customizer’s Additional CSS panel, through your child theme’s style.css, or via a dedicated file enqueued in functions.php. If you can see it on screen, CSS can probably change it.

PHP via functions.php lets you add functionality, modify WordPress behaviour, register features and hook into actions and filters. Common uses include:

  • Registering custom menu locations
  • Adding widget areas
  • Enqueueing additional scripts and stylesheets
  • Modifying post queries
  • Adding shortcodes

Template file overrides give you control over how specific content types display. Copy a template file from the parent theme into your child theme, modify it, and WordPress will use your version instead. This lets you change the HTML structure, remove elements, or completely rebuild layouts.

The risk increases at each level. CSS is forgiving. A PHP error can take your whole site down. Template overrides can cause display issues if you get the structure wrong. If you are not confident with PHP, do not guess – get help.

Common customisation tasks and how to approach them.

Changing fonts. Most themes let you do this through the Customizer. If not, enqueue Google Fonts or self-hosted fonts via functions.php and apply them with CSS. Straightforward.

Modifying the header or footer. Check if the theme has header and footer template parts you can override in your child theme. For block themes, use the Site Editor directly. For classic themes, you are likely looking at a template override.

Adding custom page templates. Create a PHP file in your child theme with the appropriate template header comment, then build the template structure you need. WordPress picks it up automatically in the page template selector.

Changing the blog layout. This usually means overriding archive.php, index.php or the content template parts – depending on how the theme is structured. Dig into the theme folder first to understand what controls what.

Adding functionality. Before writing custom code, check whether a plugin already does what you need. If custom code is the only option, add it to your child theme’s functions.php with the appropriate hooks.

For sites built on page builders, most customisation happens inside the builder rather than through code. That comes with its own set of trade-offs – performance being the big one.

When customisation is not enough.

There is a point where further customisation becomes more trouble than it is worth. You are no longer building on the theme, you are fighting it.

Signs you have reached that point:

  • Performance problems you cannot fix – the theme loads resources you cannot remove, and no amount of optimisation fixes it
  • You are constantly working around the architecture – if every change requires a workaround, the foundation is wrong
  • The underlying code is poor – building on top of badly written code makes everything worse over time
  • The overrides have become unmaintainable – when your child theme is bigger than the parent, something has gone wrong
  • Your requirements have outgrown the theme entirely – functionality you need cannot be added cleanly to the existing structure

At this point, a bespoke WordPress build is usually the more sensible commercial decision than continuing to patch something that was never right for the project.

DIY or hire a developer?

It depends on the work involved and what the site is worth to your business.

DIY makes sense when:

  • Changes are cosmetic and within your technical comfort zone
  • The theme is well documented and supported
  • You have time to learn and troubleshoot
  • The site is not generating significant revenue

Hiring a developer makes sense when:

  • Changes require PHP or template modifications
  • You need it working correctly, quickly
  • The site generates revenue and downtime costs money
  • You have already spent too many hours stuck on the same problem

The hidden cost of DIY is always time. Hours spent wrestling with code you do not fully understand are hours not spent on the things that actually grow your business. That said, paying a developer for something you could sort in an afternoon is not always the right call either.

If you are not sure where your project sits, a conversation before you commit to anything can save a lot of wasted effort. Sometimes an hour of the right advice is worth more than a week of trial and error.

Knowing what customisation can do is useful. Knowing where it stops being the right tool is just as important.

David Foreman

David Foreman

Dave is a WordPress SEO expert with over 15 years experience in designing, building and optimising WordPress websites for small businesses that want to generate more new business from their websites. He's run a creative agency for 25+ years, employs 17 staff and enjoys a good rant about SEO.