Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

I built a WordPress migration tool that checks its own work

Description and use

wp‑move migrates WordPress content, verifies all posts, media, and links, and produces a report that exits with an error if anything is missing.

Problem

WordPress migration tools often report completion but fail to verify that all content, media, and links were transferred correctly.

Outcome

On a local WordPress 7.1.3 test site, wp-move migrated all 144 posts/pages and 37 media items, with no missing images or broken internal links, and correctly mapped 164 old URLs to new paths. When an image and a post were deleted, the report detected the missing items and exited with code 2.

Workflow

  • Read posts, pages, media, categories, and tags through the REST API.
  • Convert each post to Markdown with front matter, leaving unsupported HTML as is.
  • Download images hosted on the site and rewrite their paths.
  • Map every old URL to its new path and write _redirects and nginx files.
  • Generate report.html and report.json; exit with code 2 if posts, media, image references or internal links are missing.

Evidence

Most WordPress migration tools end the same way: export finished. Finished is not the same as complete.

Source

On a local WordPress 7.1.3 with the official theme test data: 144/144 posts and pages, including a draft and a scheduled post; 37/37 media originals; 0 pages under 95% of their words, 0 missing images, 0 broken internal links; 164/164 old URLs redirect to the new path through nginx

Source

Then I broke it on purpose: I deleted one image and one post from a copy. The report showed 143/144, 36/37, and 3 missing image references, and the command exited with code 2.

Source

  • Record date: 2026-11-01T10:58:51.390Z