Migrating from WordPress to Ghost

  • What version of Ghost are you using? v2
  • What configuration? Ubuntu 18.04 - Nginx - MySQL Database

I would like to transfer a wordpress database to ghost… (only posts).
After viewing this page, I see that the plugins are not up to date. Moreover, these plugins won’t be the right solution, because I need to recover URLs managed by wordpress plugins, and I have to translate some text with an API.

According to this Ghost GitHub Page, I have to think about editing posts, tags, authors, and mobiledoc_revisions tables for each post ?

Is there a way to understand the kind of SQL request I will have to do ?
I also wonder what kind of id used in Ghost database? Id’s look like mongo id.

Maybe it’s better to try to convert my wordpress database in Json file in order to import it ?

Thanks !

@Doubrovski I had the same Question as you once and ended up, for just over 20+ Posts, to do it manually by copying every Post by Hand over to Ghost.

Before that I even tried out the Plug-in and the Option by setting up an Ghost v1.0 for Conversation the Content over from Wordpress and then upgrade the Instance to Ghost v2.0 to see if it’s fits my needs.

Maybe the best Way would be to get GhostPro (for some Months!?) and ask the Staff behind it to do all the heavy lifting for you. Or you could ask for a Professional on the Marketplace to help you out. :wink:

Hello ! Thanks !
It brings back memories, but I may not copy 1000 posts by hand! :slight_smile:
Even if the migration seems complex (translation, nasty wordpress plugins …) it’s only a question of placing strings in a new database. I already wrote a migration script a few years ago, I would like to adapt it. So I hope to do it alone for the moment it’s a non-profit project, and I’m not sure it’s the role of the Ghost staff ? (if it is I can think about it).

@Doubrovski I understand the size of the problem haha

I’ve done some migrations for clients, but the biggest I’ve done is for a personal project with about 300 posts, and the process is basically:

1 - Use the Wordpress plugin to export Json to Ghost 1.0
2 - Upload an instance of Ghost 1.0 and import Json
3 - Export Json to Ghost 1.0 and import into an instance of Ghost 2.0

In this process the biggest problems I had were in relation to the posts structure, because basically the import turned the articles into Markdown format and this generated problems in the URL of the images within the articles.

To solve I had to go into each article and copy and paste the URLs of the images, so the editor understands the code and shows the image and not the code.

No more is an interesting job :joy:, but it takes some time to create the installations and the jsons.

Hope this helps :slight_smile:

Thanks !

I guess the process involves installing an older version of node / Ubuntu / Debian…
And I already know that the process won’t works for my downloads URLs assigned to each post.

With all these problems… maybe I’ll do it by hand. But that doesn’t solve all the problems.
I don’t think I am able to store an URL assigned to each post in Ghost…
As custom fields don’t exist yet, I have to make an external download system… ?

I do not give up yet ! :slight_smile:


It really is laborious the technical part of the process, as I work with it, I always keep ISOs of servers with the configuration that I need. But I do not like Ubuntu, I prefer CentOS :slight_smile:

On the downloads, I also had this problem, and the best solution I had, was to put all the files on Amazon S3 which has a cost 0 for some gigabites
, I got the URLs in Wordpress and then created the links in Ghost Json format.

Ghost provides a default file in the Menu> Labs> Redirects, where you download and add what you need and it creates the 301.

Hope this helps :slight_smile:

@Doubrovski when you go for GhostPro, the Team behind it will support your Efforts of conversion from WordPress over to Ghost.

I don’t know, if this "Service’ is already “priced in” within the Annual Billing Cost for GhostPro or if you have to pay extra for this. :face_with_monocle:

What I heard so far was, that most Time this “Conversion Job” is already payed by ordering GhostPro and only if it’s a very complicated Job to do they might charge you extra for it.

That’s only Word of Mouth. :bangbang:

Do you mean that you put a download link in the content of each post and used redirections in order to download files ? I was thinking about using one URL for download and redirect to the right script with Nginx (node js… maybe PHP). But as you say, it is necessary to contain somewhere the links between post and download.
Maybe i can use one existing post field ^^ If i don’t use the Excerpt, i can store my download…

Okk thanks !
It could obviously help me, but as mentioned above, even if a pro helps me, then I have to correct each post for translations and downloads. I can’t ask them to work on my site :slight_smile:


I gave the redirect solution for you to keep the Wordpress download URLs and not have the job of changing any URLs on all the articles.

I get in Wordpress and I do this json code in excel in a simple way, it greatly reduces the working time, because I get into every article that has download the much work :grimacing:

Already the part of hosting files, I prefer to use the same S3 AWS, or some subdomain for a directory in PHP, but there goes of every project, for SEO a friendly URL is always the best option :slight_smile:

For my clients I provide Ghost with panel and file management, and some choose to save files inside the server folders and others outside.


Regardless of Ghost Hosting Official, or a job of outside professionals … the headache of migration exists haha