Last updated: 9 March 2022

The plugin and theme subcommands let you manage plugins and themes, respectively. Among others, you can install, (de)activate, delete and update individual plugins and themes.

Both subcommands take the same options. For instance, you can list all installed plugins using wp plugin list and list installed themes via wp theme list. As we don’t really want to go over the same subcommands twice we will just look at plugins – just remember that managing themes works just the same.

Listing and deleting plugins

A fresh WordPress install comes with two preinstalled plugins: Akismet and Hello Dolly. Both are inactive by default, and many users delete the plugins after installing WordPress. Let’s list and remove the plugins:

$ wp plugin list
+---------+----------+--------+---------+
| name    | status   | update | version |
+---------+----------+--------+---------+
| akismet | inactive | none   | 4.1.3   |
| hello   | inactive | none   | 1.7.2   |
+---------+----------+--------+---------+

$ wp plugin delete akismet
Deleted 'akismet' plugin.
Success: Deleted 1 of 1 plugins.

$ wp plugin delete hello
Deleted 'hello' plugin.
Success: Deleted 1 of 1 plugins.

Unfortunately, you can’t delete both plugins in one go. Two remove both plugins you need to run two separate wp plugin delete commands.

Searching for plugins (or themes)

The plugin search subcommand lets you search the wordpress.org plugin directory. By default, the output includes the plugin’s name, slug and user rating. However, there are dozens of other fields that can be displayed. All the available fields are listed on the plugin search page.

To display custom fields you need to add the --fields option followed by a comma-separated list of field names:

$ wp plugin search "two factor authentication" --fields=slug,last_updated,rating,tested --per-page=15
Success: Showing 15 of 118 plugins.
+------------------------------------+------------------------+--------+--------+
| slug                               | last_updated           | rating | tested |
+------------------------------------+------------------------+--------+--------+
| wordfence                          | 2020-02-12 4:18pm GMT  | 96     | 5.3.2  |
| two-factor-authentication          | 2020-02-13 10:41pm GMT | 90     | 5.3.2  |
| miniorange-2-factor-authentication | 2020-02-22 11:14pm GMT | 88     | 5.3.2  |
| jetpack                            | 2020-02-21 11:22am GMT | 78     | 5.3.2  |
| two-factor                         | 2020-02-12 7:41pm GMT  | 98     | 5.3.2  |
| duo-wordpress                      | 2019-05-17 6:25pm GMT  | 74     | 5.2.5  |
| wp-simple-firewall                 | 2020-02-25 12:56pm GMT | 98     | 5.3.2  |
| rublon                             | 2019-05-23 10:01am GMT | 84     | 5.2.5  |
| unloq                              | 2020-02-24 9:27am GMT  | 88     | 4.9.13 |
| 2fas                               | 2020-01-27 12:26pm GMT | 72     | 5.3.2  |
| keyy                               | 2019-10-17 11:57am GMT | 92     | 5.3.2  |
| wp-cerber                          | 2020-02-12 3:28pm GMT  | 98     | 5.3.2  |
| wordpress-2-step-verification      | 2020-01-02 4:03pm GMT  | 86     | 5.3.2  |
| wordfence-login-security           | 2020-01-13 7:20pm GMT  | 94     | 5.3.2  |
| application-passwords              | 2020-01-08 10:56pm GMT | 92     | 5.3.2  |
+------------------------------------+------------------------+--------+--------+

The search feature is mostly useful if you know what you are looking for. Searches can yield a large number of results, and some SEO-aware plugin developers skew the results by using very long plugin names containing as many keywords as possible. That said, you can retrieve a lot of useful information.

Installing plugins (or themes)

In any case, let’s install and activate the Two-Factor plugin. To do so, you need to enter the plugin’s slug, a URL to a remote zip file or the path to a local zip file. It is usually easiest to enter the slug:

$ wp plugin install two-factor
Installing Two-Factor (0.5.1)
Downloading installation package from https://downloads.wordpress.org/plugin/two-factor.zip...
Using cached file '/home/example/.wp-cli/cache/plugin/two-factor-0.5.1.zip'...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.

$ wp plugin activate two-factor
Plugin 'two-factor' activated.
Success: Activated 1 of 1 plugins.

$ wp plugin status two-factor
Plugin two-factor details:
    Name: Two Factor
    Status: Active
    Version: 0.5.1
    Author: Plugin Contributors
    Description: Two-Factor Authentication using time-based one-time passwords, Universal 2nd Factor (FIDO U2F), email and backup verification codes.

Updating plugins (or themes)

The command to update plugins is – you guessed it – plugin update. To update all plugins you can run the command plugin update --all. Or, you can update an individual plugin by specifying the plugin’s slug:

$ wp plugin update two-factor
Success: Plugin already updated.

And finally, you can use the --dry-run option if you just want to check if there are any updates:

$ wp plugin update --all --dry-run
No plugin updates available.