Wordpress to Ghost Migration Update

Sometimes I can’t get the Thought out of my Head, that Ghost is not really willing to offer an easy and reliable Option to Convert from WordPress to Ghost.
It’s just a Feeling I have from Time to Time and specially when I look back how Ghost changed there Prices over the Years.

Ghost Have started at around 5$ in the early Days and nowadays it’s set at 29$ for just the Entry level. That’s a very steep Change in Pricing on one Side but if you look closely enough it’s not so mysterious anymore on the other half of the Medal.

It’s just a wild guess but I claim that the Focus of Development within GHOST as a Company is more to a special Audience then to the Masses of “Hobby Bloggers” from WordPress.

DON’T GET ME WRONG, I still like Ghost a lot more then WordPress but sometimes…

You have to keep in mind that Ghost is still a small project with a small team and not so much traction in the open source world (thus not a lot of outside contributors) to be able to develop at the speed that other, bigger open source projects can.

In order to speed up development they need more resources (i.e. the increase in prices) to be able to hire more people in their team.

Also, their focus is very much centered on journalism and publishing and not so much on blogging (mass blogging as you call it, if you like) and standard site generation (i.e. business/presentation websites), even though it started as a blogging platform and still serves mainly bloggers (professional bloggers as I see it, like tech bloggers mainly).

1 Like

I do agree with many points you listed but I am still thinking it’s no Accident that GHOST developed the Way it is.

I have my Doubts that the Pricing will go down, even a little, any time soon or at all.

While I do agree that an easier migration from Wordpress to Ghost would increase the user base of Ghost I do not think that their pricing strategy differs so much from other managed hosting services.

If you compare just a few managed Ghost vs. Wordpress hosting solutions you will clearly see that there isn’t much of a difference (and 5 usd / month, the old price, was a real bargain):
Ghost(Pro) - Official managed hosting for Ghost - 29 usd / month
Flexible Pricing Tailored to Your Needs - Kinsta® - 30 usd / month
https://pantheon.io/plans/pricing - 29 usd / month

In the end, each open source project has its priorities and it will not be able to satisfy all needs and wants (you can check out Wordpress in this respect and you will see massive community backlashes to WP governance).

Cadabra.blog - 5 EUR / Month
Running on a VPS

It’s made by a German and hosted in Germany too at the big Company with the Numbers in the Title and Blue on White Label.

Comparing apples with oranges won’t get anywhere… I can also offer free Ghost (and I actually do it for a friend of mine) yet I don’t compare my services with the likes of what Ghost Pro offers.

You misinterpreted my Answer to yours, just complete your Listing. :wink:

Hello there, I’m looking to move to Ghost from Wordpress but am slightly clueless as to how to shift the Blog. I have over 350 posts as the site has been running since 2009.

Is it even possible to Move to Ghost 2.31.1 when I am paying for hosting with Ghost themselves?

This has just been updated and should work easily now:

I just tried the new version of the plugin and it barfs with a 502 error after about 20-30 seconds. I found a partially created zipfile in wp-content/uploads/ghost-exports but it is corrupted. I see nothing in my webserver (NGINX) logs other than a 502, so I assume something in the exporter is not happy. Any troubleshooting steps or ways I could resolve this?

Also it appears that in the JSON (which I was able to download) it leaves the URLs to images with the WordPress path of /wp-content/uploads/ when it should likely be /content/images/ - not sure if this is because the exporter didn’t finish, or…

Hi @stevemitchell - thank you for this feedback, much appreciated. :slightly_smiling_face: :+1:

  1. How big is your blog’s file system/folder structure and did you run the download multiple times or only once?
  2. Did you try the JSON export file directly and did it download?

In terms of the URLs to images being updated - the exporter relies on your site’s base URL/upload path so if there’s a difference in the base URL and the URL of the image, it won’t update.

For example, if your site URL is https://www.domain.tld and your image path is http://domain.tld/wp-content/uploads/ccyy/mm/imagetitle.jpg, then it won’t work, same goes for http://www.domain.tld/wp-content/uploads/ccyy/mm/imagetitle.jpg, etc.

So if you launched your site on HTTP and transitioned to HTTPS later, or launched without WWW and added it later, without updating all of the URLs then that might be part of the issue. If you need to fix URLs this script might help*: Database Search and Replace Script in PHP | inter.connect

*Make backups first and use at own discretion.

Hi @nuclearpengy - thanks for the fast reply.

  1. Total size of all files is 2.2GB. I ran the download multiple times. Each time, it generated both a JSON file and a partial zip file in the ghost-exports directory, so the overall size of my site grew pretty quickly on disk :slight_smile:
  2. Yes - it worked fine.

All image links in the current WordPress content are using the same protocol (https) and using the same domain, etc.

Thanks for this. :+1:

  1. OK. Thinking out loud: you probably need disk usage * 3 worth of space (not sure if you’ve got enough). It could also maybe be memory/ram related.
  2. OK awesome.

I’ve just deleted the plugin and done a fresh install and export and the URL replacement worked on both the zip download and the plain JSON download. If you don’t mind, please try uploading a new image to a test post and then download the JSON again and search the JSON for that specific post to see what URL is being used, to see if it’s been replaced or not.

Might help before the migration to run an image optimization plugin to ensure the images are not bigger than they need to be and also a search & replace plugin to fix potential database url issues.

1 Like

I have plenty of disk space - over 70GB free.

I use ShortPixel for image optimization, but the sad fact is that WordPress creates tons of thumbnails for each size statically, as we are all familiar with I’m sure, and my theme has a bunch of them. This is as optimized as it is going to get :slight_smile:

The good news is that I used Ghost for a year up until about a month ago, so I have a current-ish backup, and will end up just reverting to that. My full images package with Ghost is around 600MB - much smaller.

It’s throwing a 502 / bad gateway, so it could be that something with NGINX is mad at the time the script is running or something along those lines. This is a pretty straightforwards NGINX configuration, and works for many other things, so perhaps there’s another setting or tweak that is required…

Re: Disk space - OK cool, that should be more than enough so we can rule that out. It may very well be NGINX or memory related.

Re: JSON - did you come right with a test post? Did it set the base URL correctly?

To further investigate, try adding this code somewhere within your theme files temporarily.

    // test code begins.
    echo "<br/><hr/>";
    $upload_dir = wp_upload_dir();
    $testuploadurl = $upload_dir['baseurl'];
    $testuploadurl_escaped = addcslashes($testuploadurl,"/");
    echo "<strong>This is the upload URL:</strong> <code>" . $testuploadurl . "</code><br/><hr/>";
    echo "<strong>This is the upload URL escaped:</strong> <code>" . $testuploadurl_escaped . "</code><br/><hr/>";
    if (class_exists('ZipArchive'))
        echo "ZipArchive is correctly installed and enabled.";
    } else
        echo "ZipArchive is not installed or enabled.";
    // Test code ends.

It will display the URL that is getting replaced with /content/images/wordpress.

If this value is different from the URL being used by your images then that would explain why the update/replacement isn’t working.

Additionally, it’ll display whether the PHP ZipArchive extension is installed/enabled.

I did some further investigation and uploaded a bunch of extra files to my test site:


I then tried to generate the zip and it failed to download on first attempt.

I did some scratching and fiddling with the max execution time (increasing it) and eventually, the file downloaded in full and I was able to open/extract it.


So, if possible try increasing your max execution time to the highest value you can.

1 Like

Can’t export from wordpress - keep getting cloudflare database overloaded page or something like that. When I set the RAM to 16 gb I managed download the json, which is 100+ mb, but when trying to import it, it gives me an error. Max execution time is set to 30000 everywhere I could think of putting it(

Hi @unnanego - thank you for the feedback. :slightly_smiling_face: :+1:

Sounds like you’re working with quite a lot of data. How many WP posts are you trying to export?

1 Like