---
title: 'WordPress to GravCMS migration for Intention'
url: 'https://byintention.fcswebsites.co.uk/insights/wordpress-gravcms-migration-intention'
markdown: 'https://byintention.fcswebsites.co.uk/insights/wordpress-gravcms-migration-intention.md'
date: '2026-10-07'
description: "In my opinion WordPress has been heading in the wrong direction for many years now, and migrating to GravCMS is a massive win. Read on to find out the reasons we now recommend Grav over WordPress. Why migrate from WordPress to GravCMS? It's not just one thing - here are some of the compounding reas…"
taxonomy:
  category:
    - WordPress
    - 'Grav CMS'
    - Technical
    - 'Web development'
---

[Blog](https://byintention.fcswebsites.co.uk/insights)

# WordPress to GravCMS migration for Intention

7 October 2026

 WordPress Grav CMS Technical Web development 

 ![wordpress and gravCMS logos on green background](https://byintention.fcswebsites.co.uk/user/media/blogs/wordpress-to-gravcms-migration.webp) 

In my opinion WordPress has been heading in the wrong direction for many years now, and migrating to GravCMS is a massive win. Read on to find out the reasons we now recommend Grav over WordPress.

## Why migrate from WordPress to GravCMS?

It's not just one thing - here are some of the compounding reasons I can't recommend WordPress any longer.

### Corporate Legal Battles

Automattic's recent legal tussle with WPEngine and Matt's sketchy behaviour hijacking Advanced Custom Fields etc all turned me off the actual people behind WordPress.

### Technical Mess

WordPress has been going in the wrong direction for quite some time in my opinion - Gutenberg, full site editing and now AI shoehorned in. It's an absolute mess of inline CSS and comments and they have created a bizarre system that they are going to struggle to improve. Every update seems to come with some stupid new CSS to turn off.

I value clean simple code, and WordPress is very much not that. The code is slow and bloated, and they don't seem to have any plans to fix it. It's not a PHP/MySQL issue either, as other systems with the same tech stack are way faster to load than WordPress.

### Theme & Plugin Ecosystem issues

The WordPress theme and plugin ecosystem is overrun with **greedy developers** and irritations. Plugins and themes often get bought out by aggressive companies who then turn it into nagware with a yearly cost. Ugh.

### Risk of getting hacked

WordPress is at even higher risk of getting hacked in 2026 with AI systems finding bizarre new exploits that can give attackers full control of your site.

### The cost of ownership

There's a high **cost of ownership** for clients - either leave it and get hacked, autoupdate and cross your fingers it doesn't wreck your site or pay a developer every month to update the software. For sites that don't have content updates very often, there's no real benefit from running WordPress with its maintenance overhead.

So yeah, there are quite a few reasons to leave WordPress behind and move to a more modern system like Grav CMS that isn't owned by some awful corporation.

![grav admin panel in dark mode](https://byintention.fcswebsites.co.uk/user/media/grav-cms-admin-panel.png)

## GravCMS migration process

These are the steps I took to migrate the Intention site:

- Take a full backup of the WordPress site
- Install GravCMS v2 + admin plugin locally
- Recreate the site structure in Grav
- Import old blog content and delete any old blogs no longer needed
- Create our own page builder, menu editor and script insertion plugins for Grav - mirroring WordPress functionality we're all used to
- Update project page template
- Improve menu accessibility while we're rebuilding
- Upload to Git repository
- Copy the site to development address on our dev server
- Testing - browser, a11y, speed
- Tweaks from testing
- Copy to the live server
- Set up 301 redirects for any changed page addresses

## Results

### Speed

I'd done a lot of work to the WordPress version of Intention to get it up to an A rating on Ecograder. None of that was needed on the Grav site - it's insanely fast out of the box as there's no database.

Editing page text and images is also way faster, saving time when managing your website content.

### Less Maintenance

Grav sites require less maintenance as there is less going on, fewer critical security updates and no database to hack. There is an internal updater similar to WordPress, so updates can be done from the control panel rather than uploading files.

### Practice at migrating sites

Doing this project was good practice and a demonstration of the migration process so we can do the same for clients who are also fed up of WordPress.

## Differences between WordPress & GravCMS

### Custom post types

WordPress uses a custom post type for blog posts, and WooCommerce uses one for products. More can be added but it feels clunky and without adding a plugin, it has no interface. Managing custom post types like these is built in to Grav, and don't live under a separate menu item. The main listing page appears on the usual page list, and items appear underneath that. Makes more sense than the WordPress way of listing pages that only exist if there's a specially named template in the theme.

### Page editor

Grav uses Markdown, but we've switched to HTML using the ModernEditor plugin (uses TinyMCE) the same as WordPress mainly because that's what us and all our clients are used to. Toolbar for the usual editing features from WordPress like headings, buttons, adding an image etc.

### Media handling

Grav 2.2 isn't quite up to WordPress' features when it comes to media uploading and editing, so we created a custom media picker for the main library and TinyMCE toolbar insert. I also dont see the point only allowing page images to be used, so expanded the scope to allow main library images to be inserted to a page. Thumbnails can be created on the fly at whatever size required in the template code, and they are cached.

### Menus

There is no actual menu builder in Grav ,it uses an odd hack to create menus by choosing whether a page should show or not in its settings. I built a proper menu builder as we often use multiple menus on a site, and folks like to edit them.

## Summary

Migrating our own site from WordPress to GravCMS has been a fun project as well as reducing our carbon output and doing some minor redesign work on the five year old site. Grav is an absolute pleasure to work with compared to the ancient WordPress code. I am already migrating some client sites to Grav and look forward to doing many more.

---

## Navigation

- Parent: [Blog](https://byintention.fcswebsites.co.uk/insights.md)
- Next: [Badger Builder – our Grav 2 page builder](https://byintention.fcswebsites.co.uk/insights/badger-builder-our-grav-2-page-builder.md)

<!-- Added by Intention Header Footer Code plugin -->
<style>
@media only screen and (width < 48rem ) {
.home {
  #panel-6 {
    .container {
       text-align: center;
       .five {
         hyphens: none;
       }
    }
  }
}
  .page-contact .padded:first-child {
    padding: 0 0 2rem 0;
  }
}

.page-green-web-hosting {
  #panel-7 .bannerTint {
    background: none;
  }
  #panel-5 .text {
    width: 100%;
    flex: 0 0 100%;
  }
}

.page-sustainable-web-design {
    #panel-9 a:hover {
      color: var(--colour-text);
      text-decoration: underline;
    }
    #panel-9 .five {
       overflow: hidden;
    }
}
</style>

<!-- Added by Intention Header Footer Code plugin -->
<!-- Privacy-friendly analytics by Plausible -->
<script async src="https://plausible.io/js/pa-cDclpJQ-AUrkOCoNdz35l.js"></script>
<script>
  window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};
  plausible.init()
</script>

