Recently I had to set up WP-CLI with SiteGround on Mac, and it was the first time using the WP-CLI, it took a couple of hours to set up with multiple attempts as I had to read SiteGround and WordPress documentation and watch videos.
I've got multiple websites set up now for an agency to manage them with WP-CLI on SiteGround.
In this tutorial, I'll show a quick WP-CLI set-up on Mac that should only take less than 10 minutes if you don't encounter any problems.
Why use WP-CLI?
WP-CLI is an excellent WordPress tool to work in the terminal and automate your workflow to reduce the number of clicks you would have to do inside the WordPress dashboard.
Some uses to speed up your workflow:
- Add new users
- Update user roles
- Update Plugins and Themes
- Install new Plugins and Themes
- Deactivate Plugins and Themes
- Update WordPress
- Speed up Workflow on managing WordPress website/s
- Make you look like a hacker working with a terminal! Pretty cool.
- WP-CLI comes pre-installed on SiteGround, and updated by SiteGround
- Let us know in the comments how it helps you if you are using it already.
Setting Up SSH Key On Mac
Open your terminal on MAC and add the following command to generate new keys
ssh-keygen -t rsa
Next, you are asked to choose a location and enter the file name, you can save it in the default location or a new location, in this scenario I have created a new folder and will add the SSH keys here.
Now you are being asked to enter a password and choose a strong password with which your private key can be accessed.
Enter passphrase (empty for no passphrase):
You will need to renter the password a second time to confirm.
Enter same passphrase again:
And now you will see two newly created files in your folder, private and public key(with .pub extension).
Keep the terminal open, we will still be using it in a bit.
Add Public Key to SiteGround
- Navigate to your Siteground tools
- Click on the Devs tab
- Click on SSH Keys Manager
- Click Import
Enter the name with your SSH key name, upload your public key by clicking the "Import key from file", and select the newly generated public key.
You can also open the example_name.pub with a text editor, copy the key and paste it in manually.
Once the key is added, click import.
Load the Private Key
Now you've got to return to the terminal, and add the following command line to add your private key.
Followed by a password that you have previously assigned when creating the ssh keys.
Enter passphrase for /Users/arturburkalo/ssh_keys/example_name:
Now you should get a message like this:
Connect to the website vis SSH
Now you can head back to the SiteGround Sitetools, navigate to SSH Keys Manager and where you have the public key added, click on the 3 dots menu, and get the credentials.
You will need to enter the username@hostname and provide the port to the website inside a terminal to access the website via SSH with the following terminal command, replace with your details.
ssh email@example.com -p18765
Note: I've encountered an issue that you should not come across with your first website, which gave an error "Too many authentication failures", and I was able to fix it following this post: https://cloudmaniac.net/how-to-fix-ssh-too-many-authentication-failures/
Now you should do something like this, and you connected to your SiteGround website via SSH!
To close the connection at any stage, you just need to enter the following command in the terminal:
Navigate to your WordPress directory via SSH
Now we can navigate to our WordPress directory.
First I usually start by checking the "www" directory, which will display the URL of your website, including, any staging websites there.
ls command is used to show all files located in the directory, you can use ls -a which will show all the hidden files that start wih a "."(dot).
Navigate to the WordPress directory.
Check the directory to see your WordPress files
And you should get something like this with all the WordPress core files.
Working with WP-CLI
Checking WP-CLI Version
Let's now check the current version of WP-CLI with the following command line
wp cli version
As I mentioned above, SiteGround keeps the WP-CLI updated on their side, so you don't have to worry about updating the WP-CLI, but if you are running WP-CLI somewhere else you may need to install it, and keep it up to date.
That's the command to update your WP-CLI if you have it do it somewhere else:
wp cli update
Running the WP command inside WP-CLI
You can check now all the commands that are offered by WP-CLI with the command line:
Once you run it, you will get a full list of commands that you can use inside the SSH WordPress directory.
Keep pressing Enter to reveal other commands, until you get to the end...
Once you are at the end it will show you some like
lines 112-135/135 (END)
Press "q" on your keyboard, and it will exit out of the wp command.
Let's check for example what we can do with the "wp plugin" command, which will give us a list of available options
Checking Current Plugins
Check all the plugins that are on the website
wp plugin list
You can see I have for demonstration purposes a plugin that requires an update, active plugins, and inactive plugins.
Let's add a new plugin to the Website, in this case, I need an SEO plugin for all my posts and going to install Rank Math, and activate it with one command line.
wp plugin install seo-by-rank-math --activate
We have installed a plugin to WordPress with one line, without having to go and login to the WordPress dashboard, and doing multiple clicks.
You can though go to your admin dashboard in WordPress and see for yourself that the Rank Math is installed, and activated.
This is the most useful feature for me in WP-CLI, that I can update all plugins with one command line, instead of having to click through various links to get to update the plugins, it's a time saver, for individuals, and for agencies to get the task done quicker.
I do always recommend updating plugins first on a staging site before doing it on a production site, in case some errors may affect the user experience on the website.
Let's update all plugins that we had from the previous list.
wp plugin update --all
Now you can have a cup of coffee while WP-CLI does all the updates for you.
Once it's done, you will see a "Success" message.
As you can see I've accidentally used "-all" which it presumed was a plugin, what it requires is double hyphens to work "--all".
Adding New User
WP-CLI is handy for creating new users, deleting users, updating roles, resetting user passwords and much more.
You can get the full list of commands with
Ok now let's create a new user with a username, email and editor role, once created it will also provide a password for that user that you can share.
wp user create webdevartur firstname.lastname@example.org --role=editor
I prefer for security reasons not to handle other user passwords and instead could use a command like this that will send a user an email where they can follow a link to create their password handled by WordPress with the following command that will not show me the user's password.
wp user create webdevartur email@example.com --role=editor --send-email --porcelain
WP-CLI allows you to do a lot more than the above-mentioned, you can even create a post and add images via terminal, but those tasks are easier done via the WordPress CMS Dashboard.
Other tasks may include updating the core of WordPress, updating the Theme, and configuring the wp-config.php file, for example, enabling and disabling file edits from the WordPress dashboard, activation maintenance mode, deactivating it and a lot more.
It's a great way to speed up the process for an individual or an agency when managing a WordPress website.
You can go a further step, by automating your workflow by adding the most used commands to the shell, so you don't have to retype the whole thing again to do the same tasks.