Web Analytics

One WordPress Feature I Miss on Ghost

Moving from WordPress to Ghost has many benefits – but I miss one key feature: child themes. Here's what Ghost does (and doesn't) offer for custom theme users, and how to safely manage your theme customisations without losing your changes.

One WordPress Feature I Miss on Ghost
Photo by Fikret tozak / Unsplash

When I moved from self-hosted WordPress to a hosted Ghost Pro Creator account earlier this year, I embraced the cleaner writing experience, the speed, and the focused simplicity that Ghost offers.

All the benefits of writing and blogging without any of the site admin and back-end administration of a self-hosted setup.

But there’s one thing from self-hosted WordPress I really miss: child themes.

In WordPress, child themes are a smart, built-in way to customise a theme without touching the original files. Your child theme inherits all the styling and functionality of the parent theme, but your changes live in their own space.

This means when the parent theme is updated by the theme developer or WordPress itself – adding features, fixing bugs, or improving performance – your customisations don’t get wiped out, and you can benefit from the update without any grief.

Ghost doesn’t work that way.

Ghost and Theme Customisation

On Ghost Pro, I can upload a theme, edit its files, and tweak it to suit my needs. That’s great – but it comes with a hidden risk. If I start with a default theme like Source, modify it, and don’t rename it, I’m walking on thin ice.

When Ghost pushes updates to that default theme (as it occasionally does with its themes), my modifications can be overwritten without warning.

That’s because Ghost has no concept of a “child” or “inherited” theme. There’s no safe layer for your changes to live in. You’re either using the default theme as-is, or you’re fully responsible for maintaining your own forked version of it.

The Safe Option: Duplicate and Rename

The best practice is to:

  1. Make a copy of the default theme.
  2. Rename the theme folder and the theme name in the package.json file.
  3. Upload it as a new theme via the Ghost admin.

This way, Ghost sees your theme as custom and will not overwrite it, even if the original theme is updated later.

I’ve done this with Source, the theme I use – and it works. But it also raises another issue.

What You Lose When You Rename

Here’s the catch: if Ghost or a third-party theme developer updates a theme with new features (eg, support for a new Ghost content feature), template improvements, or performance optimisations, those changes won’t reach your renamed custom theme. You’re now on a parallel track, a fork.

To stay current, you have to:

  • Manually compare your theme to the latest version of the original.
  • Pick out the changes you want to keep.
  • Merge them carefully into your modified theme.

That’s a maintenance burden – especially if your theme is heavily customised or you don’t keep an eye on upstream changes. Luckily, Ghost maintains its official themes on GitHub, so you can compare versions and follow the update history.

Is It a Dealbreaker?

For me, no. Ghost still delivers the writing-focused, fast, and elegant platform I want. But I do wish there were a more elegant solution for this – perhaps some future version of Ghost could support theme inheritance or a form of partial overrides.

It’s one of the few areas where WordPress still feels more flexible and user-friendly for theme customisation.

In the meantime, if you’re on Ghost Pro and want to customise your theme, my advice is:

  • Never edit a default theme directly.
  • Always make a copy, add your customisations, rename it and upload it as your custom theme.
  • Track changes to the original theme via GitHub if you want to stay up to date.

Oh, for a child theme…

Related Reading: