Manages plugins and themes, including installs, activations, and updates.
Quick links: Using | Installing | Contributing | Support
This package implements the following commands:
Manages plugins, including installs, activations, and updates.
wp plugin
See the WordPress Plugin Handbook developer resource for more information on plugins.
EXAMPLES
# Activate plugin
$ wp plugin activate hello
Plugin 'hello' activated.
Success: Activated 1 of 1 plugins.
# Deactivate plugin
$ wp plugin deactivate hello
Plugin 'hello' deactivated.
Success: Deactivated 1 of 1 plugins.
# Delete plugin
$ wp plugin delete hello
Deleted 'hello' plugin.
Success: Deleted 1 of 1 plugins.
# Install the latest version from wordpress.org and activate
$ wp plugin install bbpress --activate
Installing bbPress (2.5.9)
Downloading install package from https://downloads.wordpress.org/plugin/bbpress.2.5.9.zip...
Using cached file '/home/vagrant/.wp-cli/cache/plugin/bbpress-2.5.9.zip'...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Activating 'bbpress'...
Plugin 'bbpress' activated.
Success: Installed 1 of 1 plugins.
Activates one or more plugins.
wp plugin activate [<plugin>...] [--all] [--exclude=<name>] [--network]
OPTIONS
[<plugin>...]
One or more plugins to activate.
[--all]
If set, all plugins will be activated.
[--exclude=<name>]
Comma separated list of plugin slugs to be excluded from activation.
[--network]
If set, the plugin will be activated for the entire multisite network.
EXAMPLES
# Activate plugin
$ wp plugin activate hello
Plugin 'hello' activated.
Success: Activated 1 of 1 plugins.
# Activate plugin in entire multisite network
$ wp plugin activate hello --network
Plugin 'hello' network activated.
Success: Network activated 1 of 1 plugins.
# Activate plugins that were recently active.
$ wp plugin activate $(wp plugin list --recently-active --field=name)
Plugin 'bbpress' activated.
Plugin 'buddypress' activated.
Success: Activated 2 of 2 plugins.
# Activate plugins that were recently active on a multisite.
$ wp plugin activate $(wp plugin list --recently-active --field=name) --network
Plugin 'bbpress' network activated.
Plugin 'buddypress' network activated.
Success: Activated 2 of 2 plugins.
Deactivates one or more plugins.
wp plugin deactivate [<plugin>...] [--uninstall] [--all] [--exclude=<name>] [--network]
OPTIONS
[<plugin>...]
One or more plugins to deactivate.
[--uninstall]
Uninstall the plugin after deactivation.
[--all]
If set, all plugins will be deactivated.
[--exclude=<name>]
Comma separated list of plugin slugs that should be excluded from deactivation.
[--network]
If set, the plugin will be deactivated for the entire multisite network.
EXAMPLES
# Deactivate plugin
$ wp plugin deactivate hello
Plugin 'hello' deactivated.
Success: Deactivated 1 of 1 plugins.
# Deactivate all plugins with exclusion
$ wp plugin deactivate --all --exclude=hello,wordpress-seo
Plugin 'contact-form-7' deactivated.
Plugin 'ninja-forms' deactivated.
Success: Deactivated 2 of 2 plugins.
Deletes plugin files without deactivating or uninstalling.
wp plugin delete [<plugin>...] [--all] [--exclude=<name>]
OPTIONS
[<plugin>...]
One or more plugins to delete.
[--all]
If set, all plugins will be deleted.
[--exclude=<name>]
Comma separated list of plugin slugs to be excluded from deletion.
EXAMPLES
# Delete plugin
$ wp plugin delete hello
Deleted 'hello' plugin.
Success: Deleted 1 of 1 plugins.
# Delete inactive plugins
$ wp plugin delete $(wp plugin list --status=inactive --field=name)
Deleted 'tinymce-templates' plugin.
Success: Deleted 1 of 1 plugins.
# Delete all plugins excluding specified ones
$ wp plugin delete --all --exclude=hello-dolly,jetpack
Deleted 'akismet' plugin.
Deleted 'tinymce-templates' plugin.
Success: Deleted 2 of 2 plugins.
Gets details about an installed plugin.
wp plugin get <plugin> [--field=<field>] [--fields=<fields>] [--format=<format>]
OPTIONS
<plugin>
The plugin to get.
[--field=<field>]
Instead of returning the whole plugin, returns the value of a single field.
[--fields=<fields>]
Limit the output to specific fields. Defaults to all fields.
[--format=<format>]
Render output in a particular format.
---
default: table
options:
- table
- csv
- json
- yaml
---
AVAILABLE FIELDS
These fields will be displayed by default for the plugin:
These fields are optionally available:
EXAMPLES
# Get plugin details.
$ wp plugin get bbpress --format=json
{"name":"bbpress","title":"bbPress","author":"The bbPress Contributors","version":"2.6.9","description":"bbPress is forum software with a twist from the creators of WordPress.","status":"active"}
Installs one or more plugins.
wp plugin install <plugin|zip|url>... [--version=<version>] [--force] [--activate] [--activate-network] [--insecure]
OPTIONS
<plugin|zip|url>...
One or more plugins to install. Accepts a plugin slug, the path to a local zip file, or a URL to a remote zip file.
[--version=<version>]
If set, get that particular version from wordpress.org, instead of the
stable version.
[--force]
If set, the command will overwrite any installed version of the plugin, without prompting
for confirmation.
[--activate]
If set, the plugin will be activated immediately after install.
[--activate-network]
If set, the plugin will be network activated immediately after install
[--insecure]
Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
EXAMPLES
# Install the latest version from wordpress.org and activate
$ wp plugin install bbpress --activate
Installing bbPress (2.5.9)
Downloading install package from https://downloads.wordpress.org/plugin/bbpress.2.5.9.zip...
Using cached file '/home/vagrant/.wp-cli/cache/plugin/bbpress-2.5.9.zip'...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Activating 'bbpress'...
Plugin 'bbpress' activated.
Success: Installed 1 of 1 plugins.
# Install the development version from wordpress.org
$ wp plugin install bbpress --version=dev
Installing bbPress (Development Version)
Downloading install package from https://downloads.wordpress.org/plugin/bbpress.zip...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.
# Install from a local zip file
$ wp plugin install ../my-plugin.zip
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.
# Install from a remote zip file
$ wp plugin install http://s3.amazonaws.com/bucketname/my-plugin.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef
Downloading install package from http://s3.amazonaws.com/bucketname/my-plugin.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.
# Update from a remote zip file
$ wp plugin install https://github.com/envato/wp-envato-market/archive/master.zip --force
Downloading install package from https://github.com/envato/wp-envato-market/archive/master.zip
Unpacking the package...
Installing the plugin...
Renamed Github-based project from 'wp-envato-market-master' to 'wp-envato-market'.
Plugin updated successfully
Success: Installed 1 of 1 plugins.
# Forcefully re-install all installed plugins
$ wp plugin install $(wp plugin list --field=name) --force
Installing Akismet (3.1.11)
Downloading install package from https://downloads.wordpress.org/plugin/akismet.3.1.11.zip...
Unpacking the package...
Installing the plugin...
Removing the old version of the plugin...
Plugin updated successfully
Success: Installed 1 of 1 plugins.
Checks if a given plugin is installed.
wp plugin is-installed <plugin>
Returns exit code 0 when installed, 1 when uninstalled.
OPTIONS
<plugin>
The plugin to check.
EXAMPLES
# Check whether plugin is installed; exit status 0 if installed, otherwise 1
$ wp plugin is-installed hello
$ echo $?
1
Gets a list of plugins.
wp plugin list [--<field>=<value>] [--field=<field>] [--fields=<fields>] [--format=<format>] [--status=<status>] [--skip-update-check] [--recently-active]
Displays a list of the plugins installed on the site with activation status, whether or not there's an update available, etc.
Use --status=dropin
to list installed dropins (e.g. object-cache.php
).
OPTIONS
[--<field>=<value>]
Filter results based on the value of a field.
[--field=<field>]
Prints the value of a single field for each plugin.
[--fields=<fields>]
Limit the output to specific object fields.
[--format=<format>]
Render output in a particular format.
---
default: table
options:
- table
- csv
- count
- json
- yaml
---
[--status=<status>]
Filter the output by plugin status.
---
options:
- active
- active-network
- dropin
- inactive
- must-use
---
[--skip-update-check]
If set, the plugin update check will be skipped.
[--recently-active]
If set, only recently active plugins will be shown and the status filter will be ignored.
AVAILABLE FIELDS
These fields will be displayed by default for each plugin:
These fields are optionally available:
EXAMPLES
# List active plugins on the site.
$ wp plugin list --status=active --format=json
[{"name":"dynamic-hostname","status":"active","update":"none","version":"0.4.2","update_version":"","auto_update":"off"},{"name":"tinymce-templates","status":"active","update":"none","version":"4.8.1","update_version":"","auto_update":"off"},{"name":"wp-multibyte-patch","status":"active","update":"none","version":"2.9","update_version":"","auto_update":"off"},{"name":"wp-total-hacks","status":"active","update":"none","version":"4.7.2","update_version":"","auto_update":"off"}]
# List plugins on each site in a network.
$ wp site list --field=url | xargs -I % wp plugin list --url=%
+---------+----------------+-----------+---------+-----------------+------------+
| name | status | update | version | update_version | auto_update |
+---------+----------------+-----------+---------+----------------+-------------+
| akismet | active-network | none | 5.3.1 | | on |
| hello | inactive | available | 1.6 | 1.7.2 | off |
+---------+----------------+-----------+---------+----------------+-------------+
+---------+----------------+-----------+---------+----------------+-------------+
| name | status | update | version | update_version | auto_update |
+---------+----------------+-----------+---------+----------------+-------------+
| akismet | active-network | none | 5.3.1 | | on |
| hello | inactive | available | 1.6 | 1.7.2 | off |
+---------+----------------+-----------+---------+----------------+-------------+
# Check whether plugins are still active on WordPress.org
$ wp plugin list --fields=name,wporg_status,wporg_last_updated
+--------------------+--------------+--------------------+
| name | wporg_status | wporg_last_updated |
+--------------------+--------------+--------------------+
| akismet | active | 2023-12-11 |
| user-switching | active | 2023-11-17 |
| wordpress-importer | active | 2023-04-28 |
| local | | |
+--------------------+--------------+--------------------+
# List recently active plugins on the site.
$ wp plugin list --recently-active --field=name --format=json
["akismet","bbpress","buddypress"]
Gets the path to a plugin or to the plugin directory.
wp plugin path [<plugin>] [--dir]
OPTIONS
[<plugin>]
The plugin to get the path to. If not set, will return the path to the
plugins directory.
[--dir]
If set, get the path to the closest parent directory, instead of the
plugin file.
EXAMPLES
$ cd $(wp plugin path) && pwd
/var/www/wordpress/wp-content/plugins
Searches the WordPress.org plugin directory.
wp plugin search <search> [--page=<page>] [--per-page=<per-page>] [--field=<field>] [--fields=<fields>] [--format=<format>]
Displays plugins in the WordPress.org plugin directory matching a given search query.
OPTIONS
<search>
The string to search for.
[--page=<page>]
Optional page to display.
---
default: 1
---
[--per-page=<per-page>]
Optional number of results to display.
---
default: 10
---
[--field=<field>]
Prints the value of a single field for each plugin.
[--fields=<fields>]
Ask for specific fields from the API. Defaults to name,slug,author_profile,rating. Acceptable values:
**name**: Plugin Name
**slug**: Plugin Slug
**version**: Current Version Number
**author**: Plugin Author
**author_profile**: Plugin Author Profile
**contributors**: Plugin Contributors
**requires**: Plugin Minimum Requirements
**tested**: Plugin Tested Up To
**compatibility**: Plugin Compatible With
**rating**: Plugin Rating in Percent and Total Number
**ratings**: Plugin Ratings for each star (1-5)
**num_ratings**: Number of Plugin Ratings
**homepage**: Plugin Author's Homepage
**description**: Plugin's Description
**short_description**: Plugin's Short Description
**sections**: Plugin Readme Sections: description, installation, FAQ, screenshots, other notes, and changelog
**downloaded**: Plugin Download Count
**last_updated**: Plugin's Last Update
**added**: Plugin's Date Added to wordpress.org Repository
**tags**: Plugin's Tags
**versions**: Plugin's Available Versions with D/L Link
**donate_link**: Plugin's Donation Link
**banners**: Plugin's Banner Image Link
**icons**: Plugin's Icon Image Link
**active_installs**: Plugin's Number of Active Installs
**contributors**: Plugin's List of Contributors
**url**: Plugin's URL on wordpress.org
[--format=<format>]
Render output in a particular format.
---
default: table
options:
- table
- csv
- count
- json
- yaml
---
EXAMPLES
$ wp plugin search dsgnwrks --per-page=20 --format=json
Success: Showing 3 of 3 plugins.
[{"name":"DsgnWrks Instagram Importer Debug","slug":"dsgnwrks-instagram-importer-debug","rating":0},{"name":"DsgnWrks Instagram Importer","slug":"dsgnwrks-instagram-importer","rating":84},{"name":"DsgnWrks Twitter Importer","slug":"dsgnwrks-twitter-importer","rating":80}]
$ wp plugin search dsgnwrks --fields=name,version,slug,rating,num_ratings
Success: Showing 3 of 3 plugins.
+-----------------------------------+---------+-----------------------------------+--------+-------------+
| name | version | slug | rating | num_ratings |
+-----------------------------------+---------+-----------------------------------+--------+-------------+
| DsgnWrks Instagram Importer Debug | 0.1.6 | dsgnwrks-instagram-importer-debug | 0 | 0 |
| DsgnWrks Instagram Importer | 1.3.7 | dsgnwrks-instagram-importer | 84 | 23 |
| DsgnWrks Twitter Importer | 1.1.1 | dsgnwrks-twitter-importer | 80 | 1 |
+-----------------------------------+---------+-----------------------------------+--------+-------------+
Reveals the status of one or all plugins.
wp plugin status [<plugin>]
OPTIONS
[<plugin>]
A particular plugin to show the status for.
EXAMPLES
# Displays status of all plugins
$ wp plugin status
5 installed plugins:
I akismet 3.1.11
I easy-digital-downloads 2.5.16
A theme-check 20160523.1
I wen-logo-slider 2.0.3
M ns-pack 1.0.0
Legend: I = Inactive, A = Active, M = Must Use
# Displays status of a plugin
$ wp plugin status theme-check
Plugin theme-check details:
Name: Theme Check
Status: Active
Version: 20160523.1
Author: Otto42, pross
Description: A simple and easy way to test your theme for all the latest WordPress standards and practices. A great theme development tool!
Toggles a plugin's activation state.
wp plugin toggle <plugin>... [--network]
If the plugin is active, then it will be deactivated. If the plugin is inactive, then it will be activated.
OPTIONS
<plugin>...
One or more plugins to toggle.
[--network]
If set, the plugin will be toggled for the entire multisite network.
EXAMPLES
# Akismet is currently activated
$ wp plugin toggle akismet
Plugin 'akismet' deactivated.
Success: Toggled 1 of 1 plugins.
# Akismet is currently deactivated
$ wp plugin toggle akismet
Plugin 'akismet' activated.
Success: Toggled 1 of 1 plugins.
Uninstalls one or more plugins.
wp plugin uninstall [<plugin>...] [--deactivate] [--skip-delete] [--all] [--exclude=<name>]
OPTIONS
[<plugin>...]
One or more plugins to uninstall.
[--deactivate]
Deactivate the plugin before uninstalling. Default behavior is to warn and skip if the plugin is active.
[--skip-delete]
If set, the plugin files will not be deleted. Only the uninstall procedure
will be run.
[--all]
If set, all plugins will be uninstalled.
[--exclude=<name>]
Comma separated list of plugin slugs to be excluded from uninstall.
EXAMPLES
$ wp plugin uninstall hello
Uninstalled and deleted 'hello' plugin.
Success: Uninstalled 1 of 1 plugins.
# Uninstall all plugins excluding specified ones
$ wp plugin uninstall --all --exclude=hello-dolly,jetpack
Uninstalled and deleted 'akismet' plugin.
Uninstalled and deleted 'tinymce-templates' plugin.
Success: Uninstalled 2 of 2 plugins.
Updates one or more plugins.
wp plugin update [<plugin>...] [--all] [--exclude=<name>] [--minor] [--patch] [--format=<format>] [--version=<version>] [--dry-run] [--insecure]
OPTIONS
[<plugin>...]
One or more plugins to update.
[--all]
If set, all plugins that have updates will be updated.
[--exclude=<name>]
Comma separated list of plugin names that should be excluded from updating.
[--minor]
Only perform updates for minor releases (e.g. from 1.3 to 1.4 instead of 2.0)
[--patch]
Only perform updates for patch releases (e.g. from 1.3 to 1.3.3 instead of 1.4)
[--format=<format>]
Render output in a particular format.
---
default: table
options:
- table
- csv
- json
- summary
---
[--version=<version>]
If set, the plugin will be updated to the specified version.
[--dry-run]
Preview which plugins would be updated.
[--insecure]
Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
EXAMPLES
$ wp plugin update bbpress --version=dev
Installing bbPress (Development Version)
Downloading install package from https://downloads.wordpress.org/plugin/bbpress.zip...
Unpacking the package...
Installing the plugin...
Removing the old version of the plugin...
Plugin updated successfully.
Success: Updated 1 of 2 plugins.
$ wp plugin update --all
Enabling Maintenance mode...
Downloading update from https://downloads.wordpress.org/plugin/akismet.3.1.11.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the plugin...
Plugin updated successfully.
Downloading update from https://downloads.wordpress.org/plugin/nginx-champuru.3.2.0.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the plugin...
Plugin updated successfully.
Disabling Maintenance mode...
+------------------------+-------------+-------------+---------+
| name | old_version | new_version | status |
+------------------------+-------------+-------------+---------+
| akismet | 3.1.3 | 3.1.11 | Updated |
| nginx-cache-controller | 3.1.1 | 3.2.0 | Updated |
+------------------------+-------------+-------------+---------+
Success: Updated 2 of 2 plugins.
$ wp plugin update --all --exclude=akismet
Enabling Maintenance mode...
Downloading update from https://downloads.wordpress.org/plugin/nginx-champuru.3.2.0.zip...
Unpacking the update...
Installing the latest version...
Removing the old version of the plugin...
Plugin updated successfully.
Disabling Maintenance mode...
+------------------------+-------------+-------------+---------+
| name | old_version | new_version | status |
+------------------------+-------------+-------------+---------+
| nginx-cache-controller | 3.1.1 | 3.2.0 | Updated |
+------------------------+-------------+-------------+---------+
Manages themes, including installs, activations, and updates.
wp theme
See the WordPress Theme Handbook developer resource for more information on themes.
EXAMPLES
# Install the latest version of a theme from wordpress.org and activate
$ wp theme install twentysixteen --activate
Installing Twenty Sixteen (1.2)
Downloading install package from http://downloads.wordpress.org/theme/twentysixteen.1.2.zip...
Unpacking the package...
Installing the theme...
Theme installed successfully.
Activating 'twentysixteen'...
Success: Switched to 'Twenty Sixteen' theme.
Success: Installed 1 of 1 themes.
# Get details of an installed theme
$ wp theme get twentysixteen --fields=name,title,version
+---------+----------------+
| Field | Value |
+---------+----------------+
| name | Twenty Sixteen |
| title | Twenty Sixteen |
| version | 1.2 |
+---------+----------------+
# Get status of theme
$ wp theme status twentysixteen
Theme twentysixteen details:
Name: Twenty Sixteen
Status: Active
Version: 1.2
Author: the WordPress team
Activates a theme.
wp theme activate <theme>
OPTIONS
<theme>
The theme to activate.
EXAMPLES
$ wp theme activate twentysixteen
Success: Switched to 'Twenty Sixteen' theme.
Deletes one or more themes.
wp theme delete [<theme>...] [--all] [--force]
Removes the theme or themes from the filesystem.
OPTIONS
[<theme>...]
One or more themes to delete.
[--all]
If set, all themes will be deleted except active theme.
[--force]
To delete active theme use this.
EXAMPLES
$ wp theme delete twentytwelve
Deleted 'twentytwelve' theme.
Success: Deleted 1 of 1 themes.
Disables a theme on a WordPress multisite install.
wp theme disable <theme> [--network]
Removes ability for a theme to be activated from the dashboard of a site on a WordPress multisite install.
OPTIONS
<theme>
The theme to disable.
[--network]
If set, the theme is disabled on the network level. Note that
individual sites may still have this theme enabled if it was
enabled for them independently.
EXAMPLES
# Disable theme
$ wp theme disable twentysixteen
Success: Disabled the 'Twenty Sixteen' theme.
# Disable theme in network level
$ wp theme disable twentysixteen --network
Success: Network disabled the 'Twenty Sixteen' theme.
Enables a theme on a WordPress multisite install.
wp theme enable <theme> [--network] [--activate]
Permits theme to be activated from the dashboard of a site on a WordPress multisite install.
OPTIONS
<theme>
The theme to enable.
[--network]
If set, the theme is enabled for the entire network
[--activate]
If set, the theme is activated for the current site. Note that
the "network" flag has no influence on this.
EXAMPLES
# Enable theme
$ wp theme enable twentysixteen
Success: Enabled the 'Twenty Sixteen' theme.
# Network enable theme
$ wp theme enable twentysixteen --network
Success: Network enabled the 'Twenty Sixteen' theme.
# Network enable and activate theme for current site
$ wp theme enable twentysixteen --activate
Success: Enabled the 'Twenty Sixteen' theme.
Success: Switched to 'Twenty Sixteen' theme.
Gets details about a theme.
wp theme get <theme> [--field=<field>] [--fields=<fields>] [--format=<format>]
OPTIONS
<theme>
The theme to get.
[--field=<field>]
Instead of returning the whole theme, returns the value of a single field.
[--fields=<fields>]
Limit the output to specific fields. Defaults to all fields.
[--format=<format>]
Render output in a particular format.
---
default: table
options:
- table
- csv
- json
- yaml
---
EXAMPLES
$ wp theme get twentysixteen --fields=name,title,version
+---------+----------------+
| Field | Value |
+---------+----------------+
| name | Twenty Sixteen |
| title | Twenty Sixteen |
| version | 1.2 |
+---------+----------------+
Installs one or more themes.
wp theme install <theme|zip|url>... [--version=<version>] [--force] [--activate] [--insecure]
OPTIONS
<theme|zip|url>...
One or more themes to install. Accepts a theme slug, the path to a local zip file, or a URL to a remote zip file.
[--version=<version>]
If set, get that particular version from wordpress.org, instead of the
stable version.
[--force]
If set, the command will overwrite any installed version of the theme, without prompting
for confirmation.
[--activate]
If set, the theme will be activated immediately after install.
[--insecure]
Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack.
EXAMPLES
# Install the latest version from wordpress.org and activate
$ wp theme install twentysixteen --activate
Installing Twenty Sixteen (1.2)
Downloading install package from http://downloads.wordpress.org/theme/twentysixteen.1.2.zip...
Unpacking the package...
Installing the theme...
Theme installed successfully.
Activating 'twentysixteen'...
Success: Switched to 'Twenty Sixteen' theme.
Success: Installed 1 of 1 themes.
# Install from a local zip file
$ wp theme install ../my-theme.zip
# Install from a remote zip file
$ wp theme install http://s3.amazonaws.com/bucketname/my-theme.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef
Checks if a given theme is installed.