WP-CLI, the command-line interface for WordPress, is one of the most popular tools among WordPress developers. However, it can be extremely helpful for anyone managing a WordPress site. In this webinar, the main person behind WP-CLI project: Alain Schlesser will show us the ins and outs of the tool. He will give us great examples on how it can be used to improve your workflow, for beginners to experienced developers and for projects big and small. We will give you invaluable examples on how to perform different tasks with WP-CLI automatically, saving you time and preventing you from making manual errors, like:
- Keep forgetting to backup? Automate the process with WP-CLI.
- Site not working? Get tips for easy troubleshoot with WP-CLI.
- Too many spam comments? Learn how to clean them in no time.
- Can’t log into your site? Reset your password with WP-CLI.
- Need to change the name of your site? WP-CLI makes it easy.
- Webinar with recording: https://www.crowdcast.io/e/learn-how-wp-cli-can
- WP-CLI homepage: https://wp-cli.org/
- WP-CLI handbook: https://make.wordpress.org/cli/handbook/
- Getting started with the shell: https://www.slant.co/topics/1025/~best-resources-to-learn-bash
My name is Alain Schlesser, I'm a freelance software engineer and the maintainer of WP-CLI.
You can find my blog at https://www.alainschlesser.com and follow me on Twitter at @schlessera.
We're installing WP-CLI in our home folder's bin
subfolder. This subfolder needs to be in the PATH
environment variable for WP-CLI to be accessible.
cd ~/bin
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
mv wp-cli.phar wp
chmod +x wp
wp cli info
Updating it later on:
wp cli update
Getting help:
wp help <command> <subcommand>
Or:
wp <command> <subcommand> --help
The second notation is more convenient because you always just append it when you started typing a command and are unsure what the final parameters are. The first notation requires help
to be the first word after wp
.
More info: https://make.wordpress.org/cli/handbook/installing/
Note: This server will be deactivated after the webinar. Use SSH login settings for your own server here.
Web:
http://hristop13.sg-host.com/
SSH:
ssh [email protected] -p18765
Doing quick checks:
wp core version
wp plugin list
wp theme list
wp user create --prompt
Note: We're immediately changing the password again through a script so that webinar attendees cannot grab control of the server:
sgw-modify-password <user-id>
Add @sgw-prod
alias:
wp cli alias add @sgw-prod [email protected]:18765/home/u126-wjdeyjeuu9mh/www/hristop13.sg-host.com/public_html
Confirm:
wp cli alias list
Usage:
wp @sgw-prod <command>
Adding an even more convenient shell alias:
alias sgw="wp @sgw-prod"
Note: For this shell alias to be persistent, you'll need to add it to your shell profile files. Otherwise, it will be gone again after you log out of your shell.
Adding alias groups to manage multiple servers:
wp cli alias add @allsgw --grouping=sgw-prod,sgw-stage
Skip loading plugins to enable WP-CLI functionality:
wp plugin list --skip-plugins[=<plugin-slug>]
Deactivate faulty plugin:
wp plugin deactivate <faulty plugin slug> --skip-plugins
Send a "Reset your password" email to a given user:
wp user reset-password <id|login>
Checkking the current site URL:
wp option get siteurl
Backup database first:
wp db export
Do a dry run first to see what will be changed:
wp search-replace "http://hristop13.sg-host.com" "https://hristop13.sg-host.com" --skip-column=guid --dry-run
Omit the --dry-run
to actually persist these suggested changed to the database.
Roll back the database in case something went wrong:
wp db import <name of SQL file that was generated>
When done from within the remote site:
wp db export
Executing on remote from local and pulling the backup to local:
scp -P 18765 [email protected]:/home/u126-wjdeyjeuu9mh/www/hristop13.sg-host.com/public_html/"$(wp @sgw-prod db export --porcelain)" ~/backups
Example cron entry:
0 0 1 * * /bin/sh /Users/alain/bin/run_backups.sh >/dev/null 2>&1
Generating spam for testing:
wp comment generate --format=ids --count=3 | xargs -d ' ' -I % wp comment spam %
Cleaning all spam comments:
wp comment delete $(wp comment list --status=spam)
Example script:
#!/bin/bash
wp db optimize
wp db export daily-backup.sql
Moving the script to the home folder bin
subdirectory and making it executable:
mkdir ~/bin
mv samplescript ~/bin
chmod +x ~/bin/samplescript
Note: Make sure your ~/bin
folder is found in the environment's $PATH
variable.
Manage network sites:
wp site ...
Manage network meta:
wp network meta ...
Convert or install mutlisites:
wp core multisite-convert ...
wp core multisite-install ...
Run a command against a specific subsite:
wp --url=subdomain.example.com <command>
Install additional profiling package first:
wp package install wp-cli/profile-command
Profile all stages:
wp profile stage --all --spotlight
Profile a specific hook:
wp profile hook init --spotlight
Discovering specific Siteground commands:
wp sg --help
Flushing the cache:
wp sg purge
Enabling GZIP compression:
wp sg optimize gzip enable
wp transient delete --expired
Checking the current setup:
wp cache type
Flushing the object cache:
wp cache flush
wp scaffold block my-new-block ...
wp option update <key> --autoload=no
When I run the wp cli alias add command, I get the following response:
Error: Config file does not exist:
Anyone know why this might be happening? I do have a wp_config.php file and other commands work fine