If you are a system administrator and responsible for managing hundreds or thousands of WordPress websites then it is a very time-consuming process. You will need to log in to each WordPress control panel, install or update plugins and themes. This is the place where the WP-CLI comes into the picture. The
WP-CLI is a powerful command-line tool specifically designed to manage WordPress from the command line. You can manage multiple WordPress sites without log into the WordPress admin panel. With WP-CLI, you can perform several operations including, installing and updating plugins, themes, creating content, working with databases, and more.
In this post, I will show how to install and use WP-CLI to manage WordPress sites.
Prerequisites
- A server running Ubuntu 20.04 with WordPress installed.
- A root password is configured on the server.
Getting Started
First, you will need to update the APT package cache to your system. You can update it with the following command:
apt-get update -y
Once your system is updated, you can proceed to the next step.
Install WP-CLI
First, download the WP-CLI binary with the following command:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
Once downloaded, set proper permission to the downloaded file:
chmod +x wp-cli.phar
Next, copy the downloaded binary to the system path with the following command:
cp wp-cli.phar /usr/bin/wp
Now, verify the WP-CLI version with the following command:
wp cli version --allow-root
You should see the following output:
WP-CLI 2.5.0
Manage Plugins with WP-CLI
In this section, we will learn how to search, install, update, and delete plugins on a WordPress site from the command line.
First, change the directory to your WordPress website with the following command:
cd /var/www/html/wordpress
To list all installed plugins on your WordPress site, run the following command:
wp plugin list --allow-root
You should see the following output:
+---------+----------+--------+---------+
| name | status | update | version |
+---------+----------+--------+---------+
| akismet | inactive | none | 4.1.9 |
| hello | inactive | none | 1.7.2 |
+---------+----------+--------+---------+
To search for a specific plugin, run the following command:
wp plugin search cache --allow-root
You should see all caching related plugins in the following output:
Success: Showing 10 of 3688 plugins.
+--------------------------------------------------------------------------------+--------------------------+--------+
| name | slug | rating |
+--------------------------------------------------------------------------------+--------------------------+--------+
| LiteSpeed Cache | litespeed-cache | 98 |
| W3 Total Cache | w3-total-cache | 88 |
| WP-Optimize – Cache, Clean, Compress. | wp-optimize | 96 |
| WP Fastest Cache | wp-fastest-cache | 98 |
| WP Cloudflare Super Page Cache | wp-cloudflare-page-cache | 98 |
| Redis Object Cache | redis-cache | 92 |
| WP Super Cache | wp-super-cache | 86 |
| Autoptimize | autoptimize | 94 |
| Hummingbird – Optimize Speed, Enable Cache, Minify CSS & Defer Critical JS | hummingbird-performance | 96 |
| Cache Enabler | cache-enabler | 88 |
+--------------------------------------------------------------------------------+--------------------------+--------+
Now, install the specific plugin from the above list with the following command:
wp plugin install wp-super-cache --allow-root
You should see the following output:
Installing WP Super Cache (1.7.3)
Downloading installation package from https://downloads.wordpress.org/plugin/wp-super-cache.1.7.3.zip...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.
Now, confirm the plugin installed or not with the following command:
wp plugin list --allow-root
You should see the following output:
+----------------+----------+--------+---------+
| name | status | update | version |
+----------------+----------+--------+---------+
| akismet | inactive | none | 4.1.9 |
| hello | inactive | none | 1.7.2 |
| wp-super-cache | inactive | none | 1.7.3 |
+----------------+----------+--------+---------+
To install the plugin from the specific source with the following command:
wp plugin install https://downloads.wordpress.org/plugin/caldera-forms.1.9.4.zip --allow-root
You should see the following output:
Downloading installation package from https://downloads.wordpress.org/plugin/caldera-forms.1.9.4.zip...
Unpacking the package...
Installing the plugin...
Plugin installed successfully.
Success: Installed 1 of 1 plugins.
To activate the installed plugin, run the following command:
wp plugin activate wp-super-cache --allow-root
You should see the following output:
Plugin 'wp-super-cache' activated.
Success: Activated 1 of 1 plugins.
To deactivate the installed plugin, run the following command:
wp plugin deactivate wp-super-cache --allow-root
You should see the following output:
Plugin 'wp-super-cache' deactivated.
Success: Deactivated 1 of 1 plugins.
To activate all plugins, run the following command:
wp plugin activate --all --allow-root
To update a specific plugin, run the following command:
wp plugin update akismet --allow-root
To delete a specific plugin, run the following command:
wp plugin delete wp-super-cache --allow-root
To delete all plugins, run the following command:
wp plugin delete --all --allow-root
Manage Themes with WP-CLI
In this section, we will show you how to install, update, search and manage themes with WP-CLI.
To list all themes installed in your WordPress site, run the following command:
wp theme list --allow-root
You should see the following output:
+-----------------+----------+--------+---------+
| name | status | update | version |
+-----------------+----------+--------+---------+
| twentynineteen | inactive | none | 2.0 |
| twentytwenty | inactive | none | 1.7 |
| twentytwentyone | active | none | 1.3 |
+-----------------+----------+--------+---------+
To search for a specific theme, run the following command:
wp theme search metro --allow-root
You should see all themes that match the word metro:
Success: Showing 4 of 4 themes.
+----------------+----------------+--------+
| name | slug | rating |
+----------------+----------------+--------+
| Metrolo | metrolo | 100 |
| MetroStore | metrostore | 100 |
| Metro Magazine | metro-magazine | 98 |
| Rara Magazine | rara-magazine | 0 |
+----------------+----------------+--------+
To install and activate the metro theme, run the following command:
wp theme install metro-magazine --activate --allow-root
You should see the following output:
Installing Metro Magazine (1.3.5)
Downloading installation package from https://downloads.wordpress.org/theme/metro-magazine.1.3.5.zip...
Unpacking the package...
Installing the theme...
Theme installed successfully.
Activating 'metro-magazine'...
Success: Switched to 'Metro Magazine' theme.
Success: Installed 1 of 1 themes.
To update all themes, run the following command:
wp theme update --all --allow-root
To delete a specific theme, run the following command:
wp theme delete metro-magazine --allow-root
Create and Manage Posts and Pages with WP-CLI
In this section, we will show you how to list, create and manage posts and pages with WP-CLI.
To list all posts of your WordPress site, run the following command:
wp post list --allow-root
You should get the following output:
+----+--------------+-------------+---------------------+-------------+
| ID | post_title | post_name | post_date | post_status |
+----+--------------+-------------+---------------------+-------------+
| 1 | Hello world! | hello-world | 2021-06-09 14:51:29 | publish |
+----+--------------+-------------+---------------------+-------------+
To delete a specific number post, run the following command:
wp post delete 1 --allow-root
To create a new post, run the following command:
wp post create --post_status=publish --post_title="How to Manage WordPress with WP-CLI" --edit --allow-root
To create a page instead of a post, run the following command:
wp post create --post_title="My new page" --post_status=draft --post_type=page --allow-root
To generate 30 posts with dummy data, run the following command:
wp post generate --count=30 --allow-root
To list all generated posts, run the following command:
wp post list --allow-root
You should see the following output:
+----+-------------------------------------+-------------------------------------+---------------------+-------------+
| ID | post_title | post_name | post_date | post_status |
+----+-------------------------------------+-------------------------------------+---------------------+-------------+
| 7 | Post 2 | post-2 | 2021-06-09 15:00:57 | publish |
| 8 | Post 3 | post-3 | 2021-06-09 15:00:57 | publish |
| 9 | Post 4 | post-4 | 2021-06-09 15:00:57 | publish |
| 10 | Post 5 | post-5 | 2021-06-09 15:00:57 | publish |
| 11 | Post 6 | post-6 | 2021-06-09 15:00:57 | publish |
| 12 | Post 7 | post-7 | 2021-06-09 15:00:57 | publish |
| 13 | Post 8 | post-8 | 2021-06-09 15:00:57 | publish |
| 14 | Post 9 | post-9 | 2021-06-09 15:00:57 | publish |
| 15 | Post 10 | post-10 | 2021-06-09 15:00:57 | publish |
| 16 | Post 11 | post-11 | 2021-06-09 15:00:57 | publish |
| 17 | Post 12 | post-12 | 2021-06-09 15:00:57 | publish |
| 18 | Post 13 | post-13 | 2021-06-09 15:00:57 | publish |
| 19 | Post 14 | post-14 | 2021-06-09 15:00:57 | publish |
| 20 | Post 15 | post-15 | 2021-06-09 15:00:57 | publish |
| 21 | Post 16 | post-16 | 2021-06-09 15:00:57 | publish |
| 22 | Post 17 | post-17 | 2021-06-09 15:00:57 | publish |
| 23 | Post 18 | post-18 | 2021-06-09 15:00:57 | publish |
| 24 | Post 19 | post-19 | 2021-06-09 15:00:57 | publish |
| 25 | Post 20 | post-20 | 2021-06-09 15:00:57 | publish |
| 26 | Post 21 | post-21 | 2021-06-09 15:00:57 | publish |
| 27 | Post 22 | post-22 | 2021-06-09 15:00:57 | publish |
| 28 | Post 23 | post-23 | 2021-06-09 15:00:57 | publish |
| 29 | Post 24 | post-24 | 2021-06-09 15:00:57 | publish |
| 30 | Post 25 | post-25 | 2021-06-09 15:00:57 | publish |
| 31 | Post 26 | post-26 | 2021-06-09 15:00:57 | publish |
| 32 | Post 27 | post-27 | 2021-06-09 15:00:57 | publish |
| 33 | Post 28 | post-28 | 2021-06-09 15:00:57 | publish |
| 34 | Post 29 | post-29 | 2021-06-09 15:00:57 | publish |
| 35 | Post 30 | post-30 | 2021-06-09 15:00:57 | publish |
| 36 | Post 31 | post-31 | 2021-06-09 15:00:57 | publish |
| 5 | How to Manage WordPress with WP-CLI | how-to-manage-wordpress-with-wp-cli | 2021-06-09 15:00:39 | publish |
+----+-------------------------------------+-------------------------------------+---------------------+-------------+
To generate a page with dummy data, run the following command:
wp post generate --count=30 --post_type=page --allow-root
Manage Database with WP-CLI
You can also manage the database with WP-CLI.
To backup your entire WordPress database, run the following command:
wp db export --allow-root
You should see the following output:
Success: Exported to 'mysite-2021-06-09-14d4641.sql'.
You can also import the WordPress database with the following command:
wp db import backup.sql --allow-root
Update WordPress with WP-CLI
To print the current version of your WordPress, run the following command:
wp core version --allow-root
You should see the following output:
5.7.2
To check for WordPress update, run the following command:
wp core check-update --allow-root
You should see the following output:
Success: WordPress is at the latest version.
You can now update the WordPress to the latest available version with the following command:
wp core update --allow-root
Conclusion
In the above guide, you learned how to install and use WP-CLI to manage the WordPress site. I hope this will make your job much easier.