WP-CLI La interfaz de comandos de WordPress – Guía de uso

Aunque la interfaz de comandos nunca ha sido muy popular entre los usuarios finales, para los desarrolladores es casi siempre la mejor opción ya que ofrece herramientas que mejoran la velocidad y la productividad en todos los procesos.

Puede que te suene raro que una interfaz en línea de comandos pueda ser útil, no digamos menor, y quizás dudes que puedas realizar tareas de todo tipo de manera más fácil que con una interfaz gráfica, pero así es, y es lo que vamos a aprender en este artículo, al menos en lo referente a WP-CLI, la interfaz de comandos para realizar tareas en WordPress.

Y es que la interfaz gráfica de WordPress ha avanzado mucho, pero cuando queremos realizar tareas administrativas o de desarrollo, no hay nada más eficaz y rápido que la interfaz de línea de comandos.

¿Qué es WP-CLI?

WP-CLI, o WordPress Command Line Interface, es una serie de herramientas en línea de comandos que ofrecen diversas funcionalidades para gestionar sitios WordPress.

¿Cómo se instala WP-CLI?

Nota: A partir de aquí es necesario disponer de un entorno tipo UNIX, ya sea Linux, OS X o FreeBSD. Si utilizas Windows puedes usar herramientas de línea de comandos como Cygwin o usar una máquina virtual.

La instalación de WP-CLI es sencilla. En principio tienes que descargar un archivo PHP y ponerlo en algún lugar de tu servidor para poder ejecutarlo desde donde te encuentres. Puedes descargar WP-CLI desde su repositorio en GitHub, tecleando lo siguiente:

Lo siguiente es hacer que el fichero sea ejecutable:

Y para finalizar hay que mover el archivo a una carpeta, para que puedas ejecutarlo desde donde quieras. Es mejor si renombres el archivo a algo que te sea fácil de recordar y teclear. La mayoría de la gente lo renombre simplemente a  wp pues seguro que de eso te acuerdas. Lo harías así:

Con eso ya lo tienes instalado, y ya podrías teclear comandos WP-CLI. Puedes comprobar, si lo prefieres, si el proceso de instalación se ha completado con éxito tecleando el siguiente comando (ya con el ejecutable renombrado, acuérdate):

Si todo ha ido bien deberías ver algo parecido a lo siguiente:

¿Qué puedo hacer con WP-CLI?

Son muchas las tareas administrativas que puedes realizar con WP-CLI, vamos a ver las más comunes, y alguna quizás no tan común.

Instalar WordPress

Un comando básico de WP-CLI es core, que te ofrece una buena cantidad de potentes herramientas para administrar instalaciones de WordPress. Lo primero, lógicamente, sería descargar el paquete de WordPress. Así que tendríamos que navegar hasta el directorio donde queramos instalarlo y teclearemos esto:

Con este comando descargamos la última versión de WordPress en inglés (en_US). Si queremos descargar otra versión o idioma usaremos los parámetros --version y --locale. Por ejemplo, para descargar la versión 4.2.2 en español de España teclearemos esto:

Una vez se complete la descarga podemos crear el archivo wp-config.php usando el comando  core config:

Como ves, el comando utiliza los argumentos que le demos (que deberás adecuar como siempre a los datos de tu servidor) y creará un archivo wp-config.php con ellos. Para terminar, instalaremos WordPress con el comando core install:

Actualizar WordPress

Si tienes que actualizar una instalación de WordPress entonces usaremos los comandos wp core update y wp core update-db para actualizar los archivos de WordPress y la base de datos (si hubiese que actualizarla).

Como no hace falta que te recuerde, las actualizaciones de WordPress son importantísimas, no digamos las de seguridad y mantenimiento. Así que podemos hacerlas rápidamente con el comando core update y (si fuese necesario) el comando core update-db:

Otra cosa que puedes hacer es comprobar la versión actual de WordPress en tu instalación usando el comando core version:

Quizás en principio pueda que no te parezca que usar la línea de comandos es más eficaz que hacerlo desde el escritorio de administración, pero si tienes que actualizar muchas instalaciones de WordPress te vas a ahorrar un montón de tiempo y clics. Puedes, por ejemplo, crear un script y actualizarlas todas de golpe:

Y, en todos los casos, ya sabes que siempre hay que hacer una copia de seguridad de la base de datos antes de actualizar nada ¿no?, pues se hace así:

Administrar plugins

También, administrar plugins, es cosa de un sencillo comando. Por ejemplo, plugin status muestra información de los plugins instalados y su estad, (A significa que está activo, I significa inactivo y UA que hay una actualización disponible) mostrando algo así:

Otros comandos relacionados con los plugins son installactivatedeactivateupdatedelete y search, que puedes usar como en estos ejemplos:

Administrar temas

Por regla general, los mismos comandos que usas para administrar los plugins puedes usarlos para los temas, simplemente reemplazando plugin con theme, así que creo que ni merece la pena repetirnos ¿verdad?

Si quizás sea interesante resaltar el comando scaffold, que crea un tema hijo vacío, lo que facilita mucho este tipo de tarea. Se haría como en este ejemplo:

Manipular datos

Además de comandos sencillos como post créatepost edit y post delete, WP-CLI ofrece más herramientas para administrar contenidos. Si necesitas, por ejemplo, un montón de entradas para probar un código de un plugin o tema, puedes usar el comando generate posts para crearlos:

También podrías exportar tu contenido actual y migrarlo a otra instalación de WordPress, algo muy útil. Para hacerlo tienes primero que instalar el plugin Importador de WordPress, como siempre, así::

Y luego ya puedes usar los comandos export e import para completar el proceso:

Administrar revisiones de entradas

Ya sabes, y sino lo recordamos, que WordPress almacena todas las revisiones de entradas en la base de datos. Esto implica que vas a almacenar un montón de información en la tabla de entradas de tu base de datos, y como el espacio de servidores no es infinito, y es caro, no es mala idea poner algo de orden en este asunto.

Para poner control, puedes usar el plugin wp-revisions-cli, que no es ni más ni menos que una extensión para WP-CLI que añade la funcionalidad de administrar revisiones de entradas. Lo puedes instalar como un plugin WordPress normal, y te ofrece una serie de comandos como cleanlist y status. Por ejemplo, si utilizas el comando wp wp revisions list, obtendrás una  lista de las revisiones de las entradas existentes:

Administrar medios

Hay un montón de tareas administrativas que puedes simplificar relacionadas con las imágenes o medios en general. Para ello WP-CLI nos ofrece herramientas muy interesantes.

Importación masiva de imágenes

No es nada raro que un cliente tenga un montón de imágenes y te pida que las importes a si web. Hacer esto desde el escritorio de WordPress sería un horror, pero podemos llamar a WP-CLI para que venga a nuestro rescate con un simple comando:

Regenerar miniaturas

Una de las tareas que todo administrador de WordPress tiene que hacer alguna vez es regenerar las miniaturas de las imágenes que usaste en el proceso de desarrollo y creación de la web. Es verdad que podrías usar un plugin o incluso algún código PHP al uso para hacerlo, pero es más rápido y fácil hacerlo con un comando de WP-CLI:

Las posibilidades son infinitas, ya que puedes combinar varios comandos para especificar qué imágenes quieres editar. Por ejemplo, para regenerar las imágenes destacadas de las entradas de una categoría concreta usaríamos un comando así:

Operaciones con la base de datos

Te sonará ya que cuando queremos realizar acciones avanzadas de administración de WordPress normalmente tenemos que usar la línea de comandos, y también para esto WP-CLI nos ofrece comandos para hacer queries:

Y, por supuesto, también podemos realizar operaciones típicas en la base de de datos como importar, exportar u optimizar:

El comando export puedes usarlo también dentro de un script o una tarea cron para administrar copias de seguridad programadas de la base de datos.

Buscar y reemplazar en la base de datos

Es una práctica habitual crear una web en un servidor local o de desarrollo una práctica y luego moverlo a otro servidor al terminar. La parte de copiar los archivos y migrar la base de datos son pasos relativamente sencillos. Ahora bien, la parte tediosa es que suelen quedar “restos” en este proceso, como el tener que reemplazar las URLs antiguas (de la instalación local o de desarrollo) almacenadas en los registros de la base de datos. Solemos solucionar este problema mediante plugins o consultas SQL, pero en ocasiones hay URLs en los datos internos en serie de la base de datos en los que una búsqueda y reemplazo normal no funcionarán.

WP-CLI, de nuevo, puede ayudarnos en esta tarea. Tenemos el comando search-replace para reemplazar la vieja URL con la nueva en todas las cadenas de la base de datos, incluidas aquellas que tengan datos internos en serie.

En este caso, WP-CLI desempaqueta datos JSON, ejecuta la acción de reemplazo y empaqueta de nuevo los datos en la base de datos.

Si quieres ver cuántas operaciones de esta acción de búsqueda hay en tu base de datos antes de ejecutar el comando export puedes ejecutar antes el comando --dry-run:

Lo que verás es algo así:

Operaciones en WordPress Multisitio

Una gran ventaja de utilizar WP-CLI en particular, y la línea de comandos en general, es la posibilidad de automatizar tareas repetitivas usando scripts. Esto también se aplica a las redes de WordPress Multisitio. De este modo, en vez de visitar el escritorio de cada web para realizar un tarea, puedes simplificar el proceso utilizando algunas líneas de código. Por ejemplo, puedes usar un script como el siguiente para instalar el plugin Importador de WordPress en un sitio concreto:

Si quieres incluso saltarte pasos adicionales a la hora de crear y ejecutar un script, puedes ejecutar el mismo ejemplo de antes con un sencillo comando:

Uso remoto de WP-CLI con SSH

Si ya has instalado WP-CLI en tu servidor remoto, y si tu proveedor de alojamiento lo permite, puedes conectarte vía un terminal SSH y utilizar también comandos WP-CLI. Lo único que necesitas es un cliente SSH y las credenciales del alojamiento para conectarte a tu servidor.

Si utilizas Linux o Mac OS X no tienes que instalar ningún software, ya que puedes hacerlo desde la aplicación Terminal, y si utilizas Windows puedes usar aplicaciones como Putty. Con cualquiera de estas herramientas puedes conectarte a tu servidor mediante SSH con este comando:

A continuación la interfaz de comandos te pedirá la contraseña y, si te conectas correctamente, tendrás una interfaz de comandos para usar las herramientas de WP-CLI en ese alojamiento. Si no estuviese disponible WP-CLI puedes seguir los pasos descritos en el sitio oficial para instalarlo. Cuando termines, de nuevo, puedes comprobar que está instalado correctamente con el comando que hemos visto al principio:

Si todo ha ido bien te mostrará la versión actual.

Ejecutar comandos de manera sencilla

Conectarse a un servidor y navegar hasta la ruta correcta para ejecutar comandos WP-CLI puede ser algo tedioso. En su lugar puedes usar WP-CLI SSH, un paquete adicional que te permite ejecutar comandos WP-CLI desde tu terminal local, si tener que conectarte al servidor remoto.

Antes de instalar WP-CLI SSH tienes que especificar la ubicación del paquete índice de WP-CLI en la carpeta ~/.wp-cli. (Si no existe crea este directorio.)

También tienes que instalar el Composer si no lo has hecho anteriormente:

A continuación crea (o usa si ya existe) el archivo composer.json:

Añade el paquete índice de WP-CLI:

Luego crea (o usa si ya existe) el archivo config.yml, y añádele estas líneas:

Con esto ya estaría todo listo para instalar el paquete WP-CLI SSH:

Lo siguiente es crear el archivo de configuración y configurar los servidores. Crea un archivo wp-cli.yml y añádele los siguientes ajustes:

En este ejemplo anterior, por supuesto, reemplaza produccion.ejemplo.com por la URL de tu servidor y /var/www/produccion por la ruta a tu instalación de WordPress. En la sección disabled commands puedes definir comandos WP-CLI no permitidos en el servidor remoto. Puedes crear tantos servidores como quieras, usando nombres diferentes para cada uno.

Si todo se ha configurado correctamente ya podrás ejecutar comandos utilizando el subcomando ssh y añadiendo el argumento del servidor:

Si estuvieses trabajando principalmente en el servidor remoto también tienes la opción de crear un alias en tu archivo ~/.bash_profile ,para que el comando wp use ese servidor por defecto:

Unidades de prueba

Las unidades de prueba pueden ser muy beneficiosas para los desarrolladores de plugins. Pueden revelar fallos rápidamente y asegurarte de que una versión nueva de tu software no rompa todo. Sin embargo, crear pruebas es un proceso complicado ya que tienes que configurar PHPUnit, configurar la biblioteca de pruebas de WordPress y los archivos de configuración. Estas últimas dos tareas puedes hacerlas muy fácilmente con WP-CLI y así crear automáticamente los archivos requeridos.

Lo primero de todo es instalar PHPUnit; siguiendo las instrucciones de su web oficial. A continuación WP-CLI entra en acción y te ayudará a crear los archivos necesarios para ejecutar las unidades de prueba PHP con un solo comando:

Si navegas hasta tu carpeta de plugins verás algunos archivos y carpetas nuevos:

Puedes utilizar el archivo install-wp-tests.sh en la carpeta bin para lanzar el entorno de pruebas:

Los parámetros utilizados son estos:

  • test_database
    la base de datos que se usará para insertar los datos de prueba
  • user
    usuario de la base de datos MySQL
  • pass
    contraseña de la base de datos MySQL
  • localhost
    servidor MySQL
  • latest
    la versión de WordPress que estás usando

El comando anterior creará una unidad de prueba de ejemplo que no hace nada, pero que puedes usarla como archivo de partida para crear tu propia prueba. El archivo es tests/test-sample.php y contiene el siguiente código fuente:

Con esto ya está todo preparado, y puedes ejecutar tu unidad de prueba para el plugin así:

Hay mucho más relacionado con las unidades de prueba pero se escapa al objetivo de este artículo. Si quieres más información la tienes en la web oficial de PHPUnit.

Usos avanzados de WP-Cli

Si has llegado hasta aquí es posible que ya te hayas convencido de que WP-CLI es una potente herramienta para el desarrollador. Pero hay mucho más, pues puedes extender la funcionalidad base de WP-CLI usando tus códigos. Hay dos maneras de hacerlo. Puedes cargar y ejecutar código PHP desde un archivo o crear tu propio plugin que genere comandos personalizados.

Ejecutar un archivo PHP

Si quieres probar un código PHP no necesitas incluirlo en un archivo de WordPress. WP-CLI dispone del comando eval-file que ejecuta comandos PHP que se hayan cargado previamente en WordPress. Por ejemplo, si quieres imprimir el título de una entrada WordPress aleatoria el código para esta acción sería algo así:

Lo guardas en un archivo llamado script.php y compruebas la respuesta tecleando este comando:

Crear comandos personalizados usando un plugin

Yendo un paso más allá puedes crear plugins WordPress personalizados que amplíen las funcionalidades por defecto de WP-CLI y así crear tus propios comandos. El archivo de tu plugin debería tener una clase para cada comando y métodos públicos para cada subcomando.

Para ver un ejemplo en acción asumamos que quieres crear un comando que contenta estos tres subcomandos:

  • hola
    toma un nombre como argumento de posición y dice hola
  • adios
    toma un nombre como argumento asociativo y dice adios
  • random
    imprime el título de una entrada aleatoria de WordPress

Crearemos una clase, denominada Mis_comandos, que contenta las tres funciones públicas: holaadios y random. Estas funciones toman dos argumentos: $args, que contiene los argumentos de posición, y $assoc_args, que contiene los argumentos de asociación.

En este ejemplo, el primer subcomando tendría un argumento posicional name,  que sería la entrada para imprimir el hola:

El segundo subcomando tendría un argumento asociativo name, que se extraería del array $assoc_args:

El tercer subcomando no tendría argumentos. Simplemente ejecutaría una petición a la base de datos, recuperando una entrada aleatoria e imprimiría el título:

Para finalizar, tendremos que registrar tu clase como un comando WP-CLI, utilizando una llamada add_command. Esta función toma como argumentos el nombre del comando y el nombre de la clase:

Una vez incluido todo el código en un plugin WordPress ya podrías confirmar que tu comando se ha registrado con éxito tecleando lo siguiente:

La salida será una lista de los comandos disponibles:

Todo estaría ya listo para ejecutar tu primeros comandos personalizados de WP-CLI:

Lo que, respectivamente, mostraría lo siguiente:

Conclusión

Espero que con este repaso tengas una idea general de las posibilidades de WP-CLI, las cuales son infinitas, no digamos si te animas a ampliar funcionalidades del código y creas tus propios comandos. Por supuesto, hay muchas más herramientas incluidas, no mencionadas en este artículo, que puedes encontrar en la web oficial de WP-CLI.

Y si quieres ampliar conocimientos aquí tienes unos enlaces imprescindibles:

Y también tienes esta chuleta base de comandos de WP-CLI:
chuleta comandos wp-cli wordpress

 

AVISO: esta publicación es de hace dos años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

Valora este artículo para mejorar la calidad del blog ...

Al hacer una valoración se recoge una cookie con la IP de tu dispositivo

FlojitoNo está malEstá bienMe ha servidoFantástico (19 votos, promedio: 5,00 de 5)
Cargando…

Autor: Fernando Tellado

Fernando Tellado, apasionado de WordPress, profesor, consultor y ponente. Maquero cansino, padre de tres hijos y de una perrita Beagle, Bilbaíno de nacimiento, Español de corazón y ciudadano de donde me quieran. Autor del libro WordPress - La tela de la araña. Mi blog personal es Navegando con red, donde he crecido como escritor en la red y ofrezco mis visiones acerca de la Web 2.0 y la blogosfera.

Comparte esta entrada en
468 ad

Centro de preferencias de privacidad

Cookies imprescindibles

Se usan para saber si ya aceptaste nuestras políticas y para servir más rápidos los contenidos.

gpdr, wpSGCacheBypass

Cookies de terceros

Usamos cookies de terceros en las que se almacenan externamente para conocer tus usos de navegación, si ya estás suscrito al boletín y los elementos compartidos en redes sociales

cfduit_, intercom-id, intercom-lou, mailerlite:language, mailerlite:webform, _ga, _gid

Pin It on Pinterest