An ageing WordPress site is often both a burden and an asset. A burden, because it is slow, fragile and kept alive by plugins. An asset, because years of articles bring visitors from search engines every day, and the shop or membership plugin holds real customers.
A good migration keeps the asset and drops the burden. On our reference project, a single-language WordPress site with a plugin shop became a five-language platform, carrying over more than 1,600 articles per language. These are the steps we follow.
1. Inventory everything that has an address
Every URL that exists today is a promise to someone — a search engine, a bookmark, a link from another site. The first step is a complete list: posts, pages, categories, media, member-only content, shop products. Nothing is migrated that is not on the list, and nothing on the list is forgotten.
2. Build the URL map before the new site
For every old address, the map defines the new one. Most articles keep a clean equivalent; member-only posts that will live behind a login get their own redirect pages; retired pages point to the closest living content. Permanent redirects carry the ranking signals to the new addresses.
3. Turn content into structured source
WordPress stores content as HTML mixed with shortcodes and plugin markup. Extracting it into clean, structured source — title, body, date, author, categories, images — is what makes everything after it possible: new design, new languages, new formats.
4. Translate with memory, not from scratch
Archives repeat themselves: the same terms, the same phrases, the same names. Translation memories and terminology lists make sure a term is translated the same way in the first article and the thousandth, and that a sentence translated once is reused everywhere it appears. That is how a large archive becomes consistent in several languages, and how missing translations are caught at build time instead of going live.
5. Generate the site from one source
Instead of five separate websites, one source produces all language versions as static pages: in our case some 9,700 of them. Static pages load fast from a global edge network, need no database on the public side and cannot be broken by a plugin update.
6. Move media out of the web server
Images and audio are moved into object storage — more than ten thousand files in this project — and served from there. The website stays light, and large files no longer slow down deployments.
7. Bring the customers along
A shop or membership migration is only finished when existing customers keep what they paid for. That is why the import of customer accounts, membership access and order histories is planned and tested from day one: nobody should have to sign up again or prove a purchase.
Checklist
- 1.List every existing URL, including media and member-only content.
- 2.Map every old URL to a new one before building the new site.
- 3.Extract content into clean, structured source.
- 4.Use translation memories and a terminology list for every language.
- 5.Generate all language versions from one source, as static pages.
- 6.Move large media into object storage.
- 7.Import customers, access rights and order histories.
- 8.Test every old URL after launch and watch Search Console.