WP-CLI

¿Quieres patrocinar?

¿Quieres aparecer aquí? Si quieres patrocinar este blog, ponte en contacto conmigo a través de este formulario

WP-CLI Parte 10, crea tus propios comandos

Décima y última entrega de la serie de WP-CLI. Hasta ahora hemos visto cómo trabajar con los comandos más útiles, e incluso cómo instalar paquetes de terceros. En esta entrada vamos a ver cómo crear nuestros propios comandos.

Creando nuestros propios comandos podremos automatizar tareas y/o procesos del día a día, o cubrir una necesidad específica nuestra, y ser más productivos.

Los paquetes de comandos (Packages) son a WP-CLI lo que los plugins son a WordPress. Como lo más práctico es verlo con un ejemplo, voy a comentar sobre el ejemplo básico que hay en la documentación oficial, los pasos que hay que seguir para crear nuestro propio comando:

<?php
/**
 * Implements example command.
 */
class Example_Command extends WP_CLI_Command {
    /**
     * Prints a greeting.
     *
     * ## OPTIONS
     *
     * <name>
     * : The name of the person to greet.
     *
     * [--type=<type>]
     * : Whether or not to greet the person with success or error.
     * ---
     * default: success
     * options:
     *   - success
     *   - error
     * ---
     *
     * ## EXAMPLES
     *
     *     wp example hello Newman
     *
     * @when after_wp_load
     */
    function hello( $args, $assoc_args ) {
        list( $name ) = $args;

        // Print the message with type
        $type = $assoc_args['type'];
        WP_CLI::$type( "Hello, $name!" );
    }
}

WP_CLI::add_command( 'example', 'Example_Command' );

Como puede observarse, existe una clase WP_CLI_Comand, sobre la que podemos crear nuestra propia clase y extender de ella. Simplemente tendríamos que crear una clase nuestra (en el ejemplo Example_Command, y extender de WP_CLI_Comand., y escribir nuestros propios métodos.

Añadiremos el comando simplemente instanciando add_command, y estableciendo el identificador de nuestro comando:

WP_CLI::add_command( 'example', 'Example_Command' );

Así, cuando en nuestra consola escribamos wp example, se ejecutará nuestro comando.

A la hora de escribir un comando, las anotaciones PHPDoc entran en juego, es decir, los comentarios tienen un objetivo. Como puede observarse, tenemos un método que se llama hello, y que tiene una serie de comentarios en PHP. Desgranando un poco:

Shortdesc

La descripción corta del comando la marca la primera línea del comentario PHPDoc:

/**
     * Prints a greeting.

Longdesc

La descripción larga, o el detalle completo de información, es la parte media del comentario PHPDoc:

    * ## OPTIONS
    *
    * <name>
    * : The name of the person to greet.
    *
    * [--type=<type>]
    * : Whether or not to greet the person with success or error.
    * ---
    * default: success
    * options:
    *   - success
    *   - error
    * ---
    *
    * ## EXAMPLES
    *
    *     wp example hello Newman

Esta información es valiosa, por ejemplo cuando un usuario escriba wp example --help en consola, aparecerá toda esta información.

Docblock tags

Esta es la última sección de los comentarios PHPDoc

    * @when after_wp_load
    */

Aquí, pueden definirse varias etiquetas, vamos a ver algunas de ellas:

@subcommand

Para indicar el nombre de un subcomando cuando no puedes nombrarlo igual que una palabra reservada de PHP. Por ejemplo list es una palabra reservada de PHP que bien podría utilizarse como un subcomando, pero no podemos crear un método de nuestra clase con este nombre:

/**
* @subcommand list
*/
function _list( $args, $assoc_args ) {
    ...
}

@alias

Con alias, podemos definir otra manera de llamar al subcomando. Por ejemplo, en lugar de llamar al subcomando wp example hello, podríamos crear un alias más corto que fuera wp example hi:

* @alias hi
*/
function hello( $args, $assoc_args ) {
    ...
}

$ wp example hi Joe
Success: Hello, Joe!

@when

Esta etiqueta indica a WP-CLI cuando ejecutar el comando. Acepta todos los hooks registrados en WP-CLI:

@when after_wp_load
// Para ejecutar nuestro comando después de que cargue WordPress

@when before_wp_load
// Para ejecutar nuestro comando antes de que WordPress sea cargado.

Esto es lo básico para entender cual es el camino a seguir para crear nuestros propios comandos. Toda la información y ejemplos más concretos los puedes encontrar en la documentación oficial a la que he hecho referencia anteriormente.

Hasta aquí la serie de entradas relativas a WP-CLI. Como habrás podido ver es una herramienta muy útil que te permite automatizar tareas y aumentar tu productividad. Tiene muchos más comandos de los que yo he comentado, te invito a que visites la web oficial y eches un vistazo por tu cuenta….y sobre todo practica.

Al principio puede echar para atrás, pero después de probarlo y tener un poco de soltura, te preguntarás cómo era posible que estuvieras viviendo sin esto.

¿Te ha resultado útil esta información?

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.