WordPress has good news and bad on WP Migration.
WordPress has always had a good set of migration tools; particularly when importing or creating a brand newsite from scratch. This is the good news. But even in the case of imports users have to be cautious:
WordPress Importer has 67 low 1-rating reviews and with reason. Both WordPress Importer and Category to Tag conversions can have unexpected consequences if they overwrite and/or delete existing posts or categories and tags. The problem is the database primary keys used in posts, pages, categories, and other WP objects become the database foreign keys used by many theme and plugin routines and their associated tables. Ditto for custom fields These primary and foreign key a)must not be deleted or b)inadvertently changed – otherwise a WordPress website will become partially to completely dysfuntional depending on how many keys were changed or deleted.
This is the bad news on WP Migrations.
So let me repeat – if you are moving WordPress tables to an empty WP website, then the migration should work because all the tables and associated database keys are moved without change. However, if you try to move a WordPress site to a partly filled WordPress website, you will have troubles because among other things post and page table rows will be overwritten on the receiving site or those rows will be blocked from being received. The developers at the excellent Database Backup plugin, WP DB Migrate Pro, have a clear article about the problems of WordPress Staging to Live-server transfers. The WP DB Migrate team is clear:
If you push your local changes to the live website you’re going to overwrite your client’s work. But, if you pull the live database back into your local environment you will overwrite your own work.Currently WP Migrate DB Pro does not have the ability of “merging” two database together. This has been an often requested feature and we are currently brainstorming ideas of how this could be solved with the plugin. So far though, our solutions are looking very complex and still require manual conflict resolution. We haven’t come up with a magic bullet just yet.
Now there are several good backup vendors whose UI interfaces appear to imply that partial transfers will work. Here is Backup Buddy:
But these partial transfers only work 100% when starting from scratch – moving to an empty directory or domain.The following screenshot shows why:
This dump of the wp-posts table from a small WordPress test, contains not just post and page entrieis but also all revisions, Salon CPT, Meta Slider, and media file entries too.The primary database keys used here appear in the bookings, wp-postmeta, and wp-terms tables as database foreign-keys. Severe problems occur if wp-posts is overwritten or partially cleared/changed.
For data migration to WordPress there is a good story. And for exporting to other non-WordPress sites thru RSS or other extensions there is also a pretty good story. And if you are transferring a complete WordPress website to a new domain, directory or hosting service plugins like Duplicator [free] and Backup Buddy will do the job. But for merging transfers between a Development/Staging to an Active/Live WordPress server, users are in uncharted and incomplete territory – a rare gap in WordPress operational services.