Managing WordPress from your terminal
Tags: php, productivity, devops, wordpress
Published: 2019-01-29 21:08:07

---
title: Managing WordPress from your terminal
description: A quick tour of WP CLI to make WordPress management fun!
canonical_url: https://pretzelhands.com/posts/managing-wordpress-from-your-terminal
published: true
tags: php, productivity, devops, wordpress
cover_image: https://thepracticaldev.s3.amazonaws.com/i/22iktx4cwsbhdvpyqu9y.jpg
---

<p><small>Photo by Luca Bravo on Unsplash</small></p>

> This post was originally published on [my personal blog](https://pretzelhands.com/posts/managing-wordpress-from-your-terminal)

Hi, I'm Richard. I'm addicted to WordPress.

...

Oh, this isn't the support group? Fine. But nevertheless, let me tell you about a humble command-line tool called `wp` (or WP CLI). It is by far my favorite way to manage WordPress installations and saves me from having to click through the Dashboard approximately 95% of the time.

### Installation

Getting `wp` installed isn't much of a hassle. If you already have [Composer](https://getcomposer.org) installed it's a breeze. You need only require the package and you're done.

I usually have `wp` installed globally because I manage a lot of WordPress sites:

```bash
composer global require wp-cli/wp-cli
```

But of course you can also just require `wp` for a project locally:

```bash
composer require wp-cli/wp-cli --dev
```

If you don't have Composer installed, there's also some [alternative installation methods.](https://make.wordpress.org/cli/handbook/installing/) Feel free to pick the one that best suits your workflow.

✨ Congratulations! Your life just became a whole lot more efficient!

### Installing WordPress from the command-line

Now to see just what you can do with `wp`, let's install WordPress and configure it. All done from the cozy comfort of your shell. The very first thing we need to do is to download the latest version of WordPress.

```bash
$ wp core download

Downloading WordPress x.y.z (en_US)...
md5 hash verified: 83bec78836aabac08f769d50f1bffe5d
Success: WordPress downloaded.
```

That wasn't hard at all, was it? Now let's setup our `wp-config.php` with all the necessary information. For this you can run the following command

```bash
$ wp config create --dbname=wpdemo --dbuser=root --dbpass=root

Success: Generated 'wp-config.php' file.
```

Of course you should replace the above database information with your own. The next step is to actually run the WordPress installer. That looks a bit like this

```bash
$ wp core install \
          --url="https://wpdemo.test" \
          --title="WordPress Demo Site" \
          --admin_user="pretzelhands" \
          --admin_password="awesome-p4ssw0rd" \
          --admin_email="hello@pretzelhands.com"
          
Success: WordPress installed successfully.
```

And you're done. You can now visit the URL of your WordPress site and take a look at your wonderful new installation!

That's a lot of parameters to remember. But never fear, `wp` is here! Until you remember all these parameters you can also run `wp config create --prompt` and `wp core install --prompt`. These commands will interactively ask you for all required parameters. Nifty!

Now let's talk about some other awesome features you might want to have.

### Installing plugins

Check! Grab the slug of a plugin and you can run the following command:

```bash
$ wp plugin install advanced-custom-fields

Installing Advanced Custom Fields (x.y.z)
Downloading installation package from https://downloads.wordpress.org/plugin/advanced-custom-fields.x.y.z.zip...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.

$ wp plugin activate advanced-custom-fields
```

You can also pass in a `--activate` flag to activate the plugin immediately. This looks like

```bash
$ wp plugin install advanced-custom-fields --activate
```

If you don't know the slug of a plugin you can find it by going to the [plugin repository](https://wordpress.org/plugins/), searching for your plugin and then checking what it says after the last slash. 

For example the URL for the Advanced Custom Fields plugin looks like this: `https://wordpress.org/plugins/advanced-custom-fields` If you check everything after the last slash you can see the slug is `advanced-custom-fields`. This is what you pass to `wp`. It may take some time to remember what slug each plugin has, but you'll remember your favorites soon enough!

### Installing languages

I hail from a German-speaking country. If I hand over a WordPress site with an English dashboard to a local client, they'll probably look at me weird. Thankfully, installing languages with `wp` is a breeze.

```bash
$ wp core language install de_DE --activate

Downloading translation from https://downloads.wordpress.org/translation/core/x.y.z/de_DE.zip...
Unpacking the update...
Installing the latest version...
Translation updated successfully.
Success: Language installed.
Success: Language activated.
```

And you're done! Go grab some tea or coffee and enjoy your success. The `--activate` flag here works the same way it does with plugins.

### Installing a theme

By now I'm sure you've figured out the pattern. But here's how you install a theme and activate it

```bash
$ wp theme install storefront --activate

Installing Storefront (x.y.z)
Downloading installation package from https://downloads.wordpress.org/theme/storefront.x.y.z.zip...
Unpacking the package...
Installing the theme...
Theme installed successfully.
Activating 'storefront'...
Success: Switched to 'Storefront' theme.
Success: Installed 1 of 1 themes.
```

And now you have Storefront for WooCommerce installed and running. Yes, that's really all there is to it.

### Closing notes and further reading

The three examples given above showed you the most common use cases for `wp`, but you can manage pretty much anything with it. Here's a short excerpt of what you can do without ever touching the WordPress dashboard

* Manage users
* Create, update, delete your posts
* Create, update, delete and moderate comments
* Do a search-replace in your database
* Export and import WordPress data
* Manage multi-site networks
* Scaffold code for custom post type, taxonomies, child themes, etc
* Run a custom PHP shell for your WordPress install
* Run a local development server for your Wordpress install
* ... (The list **does** go on for a while longer)

And if you install WooCommerce for example you get another set of commands related just to managing your online store.

So if you're working with WordPress, especially if you're working with more than 2-3 sites I heartily recommend you go out, install `wp` and get more free time out of your day.

If you want to read more, you can [check out the documentation](https://make.wordpress.org/cli/handbook/), it is an excellent reference. Otherwise, a lot can be found out by running `wp help` and browsing the man page.

Enjoy!~