The world’s most popular content management system, WordPress, powers millions of websites. Even though a lot of people find its design to be easy to use, developers frequently look for more potent tools to make tedious work easier.
With this blog post, we explore the realm of crafting personalized WP CLI commands, offering WordPress an unprecedented degree of adaptability.
Understanding WP-CLI Commands
WordPress Command Line Interface, or WP-CLI, is a strong and adaptable utility that significantly expands WordPress’s capabilities beyond the conventional admin dashboard.
When compared to typical graphical interfaces, this command line interface facilitates faster and more effective workflow by enabling developers to interact with WordPress sites straight from the command line.
As an illustration, rather than enabling a plugin via the admin dashboard after completing the standard procedures such as Go to Dashboard->Plugins->Add New->Search “Plugin name” ->Click Install -> Activate it, we can use the WP-CLI commands wp plugin install <plugin-name> to quickly and easily install the “Plugin Name” and then click “Activate” to complete the process. With this simple command everything happens at once.
Although WP-CLI already includes a core set of commands, the real power lies in a developer realizing the potential of the tool and crafting custom commands tailored to the unique requirements of their website.
Pros of WP-CLI
WP-CLI is an essential part of the WordPress ecosystem, offering developers and site managers a plethora of benefits. Let’s look at a few primary advantages:
- Speed & Efficiency: WP-CLI eliminates the need for repeated clicks in the WordPress admin interface and allows users to quickly perform various activities from the command line. This efficiency and speed are especially useful when managing multiple locations and complex processes.
- Scripting and Automation: By using custom WP-CLI commands to script and automate tasks, developers may build reliable processes that reduce the chance of human error and save time. Automation is crucial when managing tasks like updates, data migrations, and routine maintenance.
- Headless WordPress Development: The front and back end are separated in headless WordPress development. WP-CLI is essential to this process. It allows developers to easily manage and interact with their headless systems, effectively handling configurations, plugins, and content.
- Batch Processing and Data Manipulation: Complex data manipulations, database entry modifications, and content updates may all be done in bulk using custom WP-CLI commands. When working with large-scale procedures or massive datasets, this is especially helpful.
Cons of WP-CLI
- Learning Curve: Non-technical users may find it challenging to adopt WP-CLI, as they prefer the more intuitive graphical admin interface.
- Risk of Errors: Users must be cautious and ensure they understand the commands they are executing, often requiring additional time for verification.
- Limited Error Messages: Diagnosing and resolving issues might require more technical expertise and familiarity with WordPress internals.
- Dependency on Server Environment: Managing these dependencies requires knowledge of server administration, which may not be feasible for all users.
- Not All Plugins Supported: Developers might need to create custom commands or scripts to handle plugins that lack built-in WP-CLI support.
Creating Custom WP-CLI Commands: An In-Depth Look
Writing custom WP CLI commands may sound difficult, but with the right approach, it can be a worthwhile endeavor. Start this journey step by step:
1. Set Up a WordPress Plugin
To start, create a new WordPress plugin or put your custom commands within an already-existing plugin. This guarantees the project will have an orderly and transparent structure.
2. Create a Commands Folder
Make a ‘commands’ folder inside the plugin directory. Your customized command files will be stored here.
3. Structuring the Command Class
Create a PHP file with an extended WP_CLI_Command class for each custom command. Important properties like $command (the actual command name) and $shortdesc (the command’s brief explanation) must be defined for this class.
Example 1: Clearing All Transients
Transients are a way to temporarily store cached data in WordPress. Sometimes, you might need to clear all transients to refresh your site’s data. Let’s create a custom WP-CLI command to do this.
Step 1: Create a Plugin
wp-content/plugins directory, create a folder called elsner-wp-cli-clear-transients, and inside it, create a file named elsner- wp-cli-clear-transients.php
<?php
/*
Plugin Name: Elsner WP-CLI Clear Transients
Description: A simple plugin to clear all transients via WP-CLI.
Version: 1.0
Author: Elsner Technologies
*/
if (defined(‘WP_CLI’) && WP_CLI) {
class Clear_Transients_Command extends WP_CLI_Command {
/**
* Clear all transients.
* @when after_wp_load
*/
public function clear() {
global $wpdb;
$wpdb->query(“DELETE FROM $wpdb->options WHERE option_name LIKE ‘\_transient\_%'”);
$wpdb->query(“DELETE FROM $wpdb->options WHERE option_name LIKE ‘\_site\_transient\_%'”);
WP_CLI::success(“All transients cleared.”);
}
}
WP_CLI::add_command(‘transients’, ‘Clear_Transients_Command’);
}
▲
Step 2: Activate the Plugin
Activate the plugin from the WordPress admin dashboard or via WP-CLI:
wp plugin activate elsner-wp-cli-clear-transients
Step 3: Use the Command
Run the custom command:
wp transients clear
This command will clear all transients stored in your WordPress database.
Example 2: Listing Custom Post Types
Suppose you want to list all custom post types registered on your WordPress site. Let’s create a WP-CLI command to do this.
Step 1: Create a Plugin
elsner-wp-cli-list-cpt and inside it, create a file named elsner-wp-cli-list-cpt.php
<?php
/*
Plugin Name: Elsner WP-CLI List Custom Post Types
Description: A simple plugin to list all custom post types via WP-CLI.
Version: 1.0
Author: Elsner Technologies
*/
if (defined(‘WP_CLI’) && WP_CLI) {
class List_CPT_Command extends WP_CLI_Command {
/**
* List all custom post types.
* @when after_wp_load
*/
public function list() {
$post_types = get_post_types([‘_builtin’ => false], ‘names’);
if (empty($post_types)) {
WP_CLI::success(“No custom post types found.”);
return;
}
foreach ($post_types as $post_type) {
WP_CLI::line($post_type);
}
}
}
WP_CLI::add_command(‘cpt’, ‘List_CPT_Command’);
}
▲
Step 2: Activate the Plugin
Activate the plugin from the WordPress admin dashboard or via WP-CLI:
wp plugin activate elsner-wp-cli-list-cpt
Step 3: Use the Command
Run the custom command:
wp cpt list
This command will list all custom post types registered on your WordPress site.
Conclusion
Creating custom WP-CLI commands can significantly enhance your WordPress development workflow, offering speed, efficiency, and flexibility. By following the steps and having a look at the examples outlined in this article, you can start crafting your own custom commands tailored to your specific needs, unlocking the full potential of WP-CLI and WordPress.
About Author
Harshal Shah - Founder & CEO of Elsner Technologies
Harshal is an accomplished leader with a vision for shaping the future of technology. His passion for innovation and commitment to delivering cutting-edge solutions has driven him to spearhead successful ventures. With a strong focus on growth and customer-centric strategies, Harshal continues to inspire and lead teams to achieve remarkable results.