It is broadly accepted that developers should test updates through a staging site before releasing them to the live server, however once the development updates require modifications in WordPress DB, things get complicated, as users in the live site will update the DB too.
The only (muddled) flow I can imagine is the following:
- Test on a local server (WAMP, XAMP, etc)
- Once ready to deploy, put the live site in maintenance mode
- Backup live site (Duplicator, sqldump, etc)
- Create a clone of locked live site to the staging site
- Upload modifications from local environment to the staging site
- Test the staging site
- Push the staging site to live.
- Remove maintenance mode
Drawbacks of the flow above:
- downtimes may be longer than expected for users while the developer
is carefully testing updates in the staging site; - may require manual management of modifications: for instance, siteorigin pagebuilder layouts are stored in the db, so once a layout is modified, it must be imported manually in the staging site; in this case it could be adequate to simply drop & import pages into the staging site, and if working, importing them in the live site
I wonder if is there a better and more automated way to achieve this.
What do you think?
EDIT, as requested, some solutions have been proposed in the past but none offers a definitive solution:
- 9/2010 – Database synchronization between dev/staging and production
- 12/2011 – Deploying Updated or New Plugins That Modify the wp_options Table
- 9/2014 – How to upload local changes to a live server without overriding new posts/pages?
- 1/2015 – How to maintain wordpress site blogs in production and staging?