n5s / wp-cli-move
Sync your WordPress content (database and uploads) between stages using the power of WP-CLI aliases.
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 3
Forks: 0
Open Issues: 0
Type:wp-cli-package
Requires
- php: ^8.1
Requires (Dev)
- ergebnis/composer-normalize: ^2.45
- php-stubs/wordpress-stubs: ^6.7
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^2.1
- rector/rector: ^2.0
- slevomat/coding-standard: ^8.14
- szepeviktor/phpstan-wordpress: ^2.0
- wp-cli/config-command: ^2.3
- wp-cli/core-command: ^2.1
- wp-cli/db-command: ^2.0
- wp-cli/eval-command: ^2.2
- wp-cli/search-replace-command: ^2.1
- wp-cli/wp-cli-tests: ^4.2
README
Sync your WordPress content (database and uploads) between stages using the power of WP-CLI aliases.
Install
Using composer:
composer require n5s/wp-cli-move --dev
Using wp package install
:
wp package install nlemoine/wp-cli-move:^0.1.0
Requirements
The requirements must be met on both stages.
- SSH access
- WP-CLI
- mysql/mysqldump
- rsync
- gzip (optional, can be disabled with the
--disable-compress
flag)
Before running commands, make sure you have WP-CLI aliases set up. This can be done either with the wp cli alias
command or by editing your wp-cli.yml
file.
Once you're done, quickly check that remote WP-CLI commands work as expected:
wp @your-alias option get home
# It should print your alias home URL
https://example.org
For more information about alias configuration, refer to the following WP-CLI documentation:
- https://make.wordpress.org/cli/handbook/guides/running-commands-remotely/#aliases
- https://make.wordpress.org/cli/handbook/references/config/
Usage
Depending on the sync direction, use either the pull
or push
commands.
wp move pull/push [<alias>] [--db] [--uploads] [--disable-compress] [--dry-run]
If you omit the --db
or --uploads
flags, both data types will be synced by default.
Note that the <alias>
argument is optional. Configured aliases will be shown in a menu to choose from if left empty.
Caution
Just like any tool that manipulates your data, it's always a good idea to make a backup before running commands.
Especially when syncing uploads, which uses the rsync
command with the --delete
flag under the hood and can wipe all your media files if used incorrectly.
Be sure to know what you're doing.
Options
Both pull
and push
commands use the same options.
[<alias>]
: The alias you want to sync with.--db
: Sync only the database.--uploads
: Sync only the uploads.--disable-compress
: Disable database dump compression.--dry-run
: Print the command sequence without making any changes.
Note
Each time you sync your database from one stage to another, wp-cli-move
will locally backup the database of the synced stage (a local database dump when pulling, a remote database dump when pushing).
Examples
Pulling content
Pull your production content to your local environment:
wp move pull @production
Tip
Using @
as declared in wp-cli.yml
is optional. For example, production
and @production
will resolve the same alias.
Pushing content
Push your local content to your staging environment:
wp move push staging
Credits
This WP-CLI package aims to replace the (still working but unmaintained) awesome Wordmove Ruby gem 💎. It has been a time and life saver for many years. I'll be forever grateful to @alessandro-fazzi for creating it! 🙌
Although Wordmove is a great and handy tool for your daily WordPress work, some reasons led me to come with a simpler, more WordPress flavoured alternative:
- It has become harder to easily install the gem over the years as the required Ruby version has been deprecated, especially for non-Ruby developers (at least for me).
- Most importantly, an idea I submitted years ago has never been implemented. This feature would remove a lot of tedious configuration setup (database credentials, etc.).
- It's written in Ruby 😄