Production WordPress maintenance often moves faster in the shell than in wp-admin, which makes WP-CLI the practical tool for plugin changes, URL rewrites, database exports, cache operations, and scripted maintenance windows. The same speed also raises the blast radius: a command run against the wrong document root, the wrong multisite URL, or the wrong filesystem owner can turn a routine change into a live outage.
WP-CLI boots the site from the WordPress files it is pointed at, loads /wp-config.php/, and then runs the requested command inside that application context. Current command pages still document --path=<path> and --url=<url> as the global parameters that pin the filesystem and site context, while wp core is-installed uses exit codes rather than normal output and wp option get home returns the active site URL directly.
Write operations on production can touch both the live database and the live file tree immediately, so the safe pattern is to verify the target install first, take a rollback export before any change, preview risky commands with a read-only or --dry-run form, and validate the exact success state after the write. On multisite, every site-specific command should keep the correct --url value attached, and in automation it is safer to keep --path explicit than to trust whatever working directory the shell inherited.
$ cd /var/www/example.com/public_html
In automation or shared shell sessions, add --path=/var/www/example.com/public_html to each wp command instead of relying on the inherited working directory.
$ wp core is-installed && echo "WordPress is installed" WordPress is installed
The wp core is-installed command itself is silent on success and communicates through its exit code. The echoed line only makes that success obvious in an interactive shell or runbook log.
$ wp option get home https://www.example.com
On multisite, add --url=https://www.example.com to the remaining commands so the operation runs against the intended site instead of the network default. home and siteurl can differ on subdirectory installs, so check both when the topology is unusual.
$ mkdir -p ~/backups/wordpress $ wp db export ~/backups/wordpress/pre-change-$(date +%F-%H%M%S).sql Success: Exported to '/home/user/backups/wordpress/pre-change-2026-03-29-121500.sql'.
The current wp db export command still calls mysqldump with the active /wp-config.php/ database credentials, so the host needs a working MySQL or MariaDB client package before the backup step can succeed.
Related: How to back up a WordPress site
$ wp search-replace 'http://old.example.com' 'https://www.example.com' --all-tables-with-prefix --skip-columns=guid --dry-run --report-changed-only Success: 5 replacements to be made.
If the preview touches unexpected tables, columns, or row counts, stop and review the scope before running the real command. The dry run is the checkpoint, not a formality.
Use a controlled sudo -u www-data or the equivalent web-content owner only when the command needs to write plugin files, cache files, or generated assets. Mixing users on production can leave root-owned paths behind in wp-content and break later updates or uploads.
$ wp option get home https://www.example.com
Match the check to the change: use wp option get ... after an option edit, rerun the same --dry-run search-replace until it reports no pending replacements, use wp plugin list or wp theme list after extension maintenance, or use wp core verify-checksums after core file work instead of assuming the final Success line is enough.