WordPress.org self-hosted to VeloCMS migration steps
Self-hosted WordPress gives you direct database access, which makes migration faster than WordPress.com. This guide walks through the MySQL export path, image bulk transfer, and permalink redirect strategy.
Self-hosted WordPress gives you two migration paths: the WXR XML export (same as WordPress.com, described in the WordPress.com playbook) or a direct MySQL dump that the migration CLI can parse faster for large sites. For blogs over 500 posts, the MySQL path is significantly quicker because it bypasses the WordPress admin export throttle.
Option A — WP-CLI export (recommended for most sites)
If WP-CLI is installed on your server, run wp export --dir=/tmp/wp-export --post_type=post --post_status=publish to generate a WXR file. This is faster than the admin UI export for large sites because WP-CLI runs without the 30-second PHP timeout that limits admin exports. Transfer the .xml file to your local machine and follow the WXR import steps in the WordPress.com playbook from Step 2 onward.
Option B — Direct MySQL dump
mysqldump -u username -p database_name \
wp_posts wp_postmeta wp_terms wp_term_relationships wp_term_taxonomy \
> wp-dump.sql
# Then convert:
velocms-migrate mysql-to-json --input wp-dump.sql --output posts.jsonTransferring wp-uploads images
Unlike WordPress.com (where images are hosted on WordPress servers), self-hosted WordPress stores images in wp-content/uploads/ on your server. Run tar -czf uploads.tar.gz wp-content/uploads/ and download the archive. The migration CLI's upload-media command reads the archive and re-uploads images to your VeloCMS R2 bucket, updating image URLs in the imported posts automatically.
Permalink redirect strategy for self-hosted
Self-hosted WordPress typically uses one of three permalink patterns: /?p=123 (numeric), /YYYY/MM/DD/slug (date-based), or /slug (plain). The VeloCMS importer preserves post slugs, so /slug to /blog/slug redirects are straightforward (just add the /blog/ prefix). Date-based permalinks require a regex redirect rule. The migration CLI generates Nginx rewrite rules and Cloudflare regex redirect rules for both patterns — check the redirects/ directory of the output.