WordPressWordPress

Crafting Custom WP-CLI Commands: Unlocking WordPress Flexibility & Adaptability

Crafting Custom WP-CLI Commands In WordPress

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 is no longer just a content management system—it’s a complete development platform that allows developers to create highly custom solutions. WP-CLI is one of the tools that unlocks this potential.” — WP Developer or Expert

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 DevelopmentThe 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

Growth of the WordPress Ecosystem: There are over 60,000 plugins available for WordPress, offering vast customization options. The most popular plugins include Yoast SEO, used on over 12 million websites, and Elementor, with over 12 million active installations

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

First, create a new plugin to house your custom command. In your

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

In your wp-content/plugins directory, create a folder called

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.

Interested & Talk More?

Let's brew something together!

GET IN TOUCH
WhatsApp Image