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
ssh-keygen -t rsa command in terminal on mac

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.

/Users/arturburkalo/ssh_keys/example_name
choosing the file name and location for SSH key

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):
password for ssh key

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

  1. Navigate to your Siteground tools
  2. Click on the Devs tab
  3. Click on SSH Keys Manager
  4. 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.

ssh-add /Users/arturburkalo/ssh_keys/example_name
adding 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:
password for the SSH key

Now you should get a message like this:

identy addded for ssh private key

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.

credentials button inside SiteGround Sitetools to get the credentils to log into the SSH
SSH credentials inside the SiteGround site-tools

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 u18-f0laxcyiwdec@c106005.sgvps.net -p18765
connecting to SiteGround website via SSH

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!

connected to SiteGround via SSH in terminal on MAC

To close the connection at any stage, you just need to enter the following command in the terminal:

exit

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 www

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).

check directories inside the www folder via SSH

Navigate to the WordPress directory.

cd www/vmdigital14.sg-host.com/public_html
navigating to WordPress directory via SSH and MAC terminal with the CD command

Check the directory to see your WordPress files

ls

And you should get something like this with all the WordPress core files.

WordPress directory files shown via ssh connection on mac in terminal

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:

wp

Once you run it, you will get a full list of commands that you can use inside the SSH WordPress directory.

wp commands inside wp-cli on siteground

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

wp plugin
wp plugin command inside wp cli

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.

Installing 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.

Updating Plugins

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.

updating all plugins with the wp cli plugin update -all command via terminal

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

wp user

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 artursburkalo@gmail.com --role=editor
create new user in WP Cli

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 artursburkalo@gmail.com --role=editor --send-email --porcelain

WP-CLI Conclusion

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.