Utilidades

Todo lo que necesitas saber de WP-CLI

29/12/2017

WP-CLI (Command-Line Interface) es una herramienta que permite administrar instalaciones de WordPress desde la línea de comandos.

Con la Interfaz por Línea de Comandos podemos gestionar las instalaciones de WordPress muchísimo más rápido de lo que lo haríamos accediendo al panel de control del administrador. Podemos instalar WordPress, descargar plugins, actualizar tanto el core de WordPress como los plugins o los temas, así como crear o borrar usuarios, entre muchas otras cosas.

A continuación vamos a dar comienzo a la guía en la que explicaremos cómo instalar la CLI, explicar los comandos disponibles, etc.

Instalar WP-CLI

Para empezar vamos a definir los requisitos necesarios para instalar WP-CLI.

Según la página oficial, se requiere como mínimo la versión 5.3.29 de PHP, así como una versión de WordPress posterior a la 3.7.

A pesar de que se puede instalar en entornos Windows, está limitado, por lo que para sacarle el máximo rendimiento debe estar en un entorno UNIX. También se require tener conexión con el servidor en el que se va a instalar, ya sea por estar gestionando el servidor físicamente, o por estar conectado mediante SSH.

Una vez definidos los requisitos, procederemos a explicar cómo instalar WP-CLI.
En primer lugar descargamos el fichero wp-cli.phar:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

Seguidamente le damos permisos de ejecución al fichero:

chmod +x wp-cli.phar

Después movemos el fichero a "/usr/local/bin/wp" para poder ejecutarlos desde cualquier parte.

mv wp-cli.phar /usr/local/bin/wp

Tras ésto, ya hemos instalado WP-CLI.

Para comprobar que se ha instalado correctamente, ejecutar el comando:

wp --info

Os debería salir algo parecido a:

PHP binary: /usr/bin/php7.1
PHP version: 7.1.12-1+ubuntu16.04.1+deb.sury.org+1
php.ini used: /etc/php/7.1/cli/php.ini
WP-CLI root dir: phar://wp-cli.phar
WP-CLI vendor dir: phar://wp-cli.phar/vendor
WP_CLI phar path: /var/www/html
WP-CLI packages dir:
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 1.4.1

Ejemplos: Instalar y Actualizar WordPress

A continuación vamos a poner un ejemplo de cómo instalar WordPress desde cero, y otro ejemplo de cómo actualizar WordPress.

Instalar WordPress

En primer lugar vamos a descargar WordPress. Para ello podemos elegir la versión que queremos con la opción --version, y el idioma con --locale.

Lo habitual es instalar la última versión de WordPress, por lo que vamos a omitir el uso de --version, y como lo queremos en español, ponemos --locale=es_ES (si se omite la opción se descarga en inglés, en_US).

wp core download --locale=es_ES

Procederemos a continuación a generar el fichero wp-config.php.

Para ello tenemos que indicar el nombre de la base de datos (--dbname), el usuario (--dbuser), la contraseña (--dbpass) y el host en el que está la base de datos (--dbhost).

La base de datos no se genera automáticamente, por lo que debemos crearla ANTES de generar el fichero.

mysql -u root -proot -se "create database db_wordpress;"
mysql -u root -proot -se "grant all privileges on db_wordpress.* to 'db_user'@'localhost' identified by 'db_pass';"
mysql -u root -proot -se "flush privileges;"

Una vez hayamos creado la base de datos, generamos el fichero con el comando:

wp config create --dbname=db_wordpress --dbuser=db_user --dbpass=db_pass --dbhost=localhost

Tras generar el fichero, ya podemos realizar la instalación de WordPress. Una de las ventajas de instalar WordPress con WP-CLI, es que no es necesario configurar la instalación desde el navegador, sino que se puede configurar absolutamente todo desde la línea de comandos.

En la instalación de WordPress se debe indicar la url (--url), el título (--title), el nombre del usuario administrador del sitio (--admin_user), la contraseña del administrador (--admin_password) y el email (--admin_email).

Como vamos a realizar una instalación sencilla, no vamos a habilitar https. El comando para realizar la instalación es:

wp core install --url=http://ejemplo_wordpress.com --title="Ejemplo WordPress" --admin_user=admin --admin_password=admin123 --admin_email=ej_wp@gmail.com

Actualizar WordPress

Como ya comentamos en el artículo en el que explicamos cómo mejorar la seguridad de tu WordPress, siempre hay que tener la última versión de WordPress. Esto se debe a que al sacar una nueva actualización se hacen públicos los fallos de seguridad corregidos en la última versión, por lo que no actualizar WordPress es correr un gran riesgo del todo innecesario.

Para actualizar WordPress simplemente debemos introducir el comando:

wp core update

Si ya está actualizado saldrá un mensaje indicando que WordPress ya está actualizado, si no lo está se actualizará.

En lugar de actualizarlo, podemos comprobar si existe una actualización con el comando:

wp core check-update

Tras estos ejemplos, vamos comentar parte de los comandos disponibles para mostrar cómo funcionan.

Comandos

Antes de entrar en detalles en los distintos comandos que se pueden ejecutar, debes saber que puedes ver en cualquier momento las opciones de cada comando tecleando el comando que quieres ver seguido de --help.

wp-cli --help

Lista de comandos

cache
Manipula los elementos cacheables de WordPress.
cap
Añade, elimina, y lista las capacidades de un rol de usuario.
checksum
Comprueba la integridad de los archivos comparándolos con ficheros limpios.
cli
Comprueba la información actual de WP-CLI, comprueba actualizaciones o lista los alias definidos
comment
Crea, actualiza, borra y modera comentarios.
config
Gestiona el fichero wp-config.php.
core
Descarga, instala, actualiza y gestiona una instalación de WordPress.
cron
Gestiona los eventos y programaciones de los cron de WordPess.
db
Realiza operaciones básicas de las bases de datos utilizando las credenciales almacenadas en el fichero wp-config.php.
eval
Ejecuta código PHP
eval-file
Carga y ejecuta un fichero php.
export
Exporta el contenido de WordPress a un fichero WXR.
help
Consigue ayuda en WP-CLI o con un comando específico.
import
Importa contenido desde un fichero WXR.
language
Instala, desinstala, lista, actualiza y activa un idioma.
media
Importa archivos adjuntos, regenera miniaturas y lista el tamaño de las imágenes.
menu
Lista, crea, asigna y borra los menús del tema activo.
network
Administra los campos personalizados de la red (para multisitios)
option
Extrae y define las opciones del sitio, incluyendo los plugins y las configuraciones de WordPress.
package
Lanza comandos del administrador de paquetes de WP-CLI.
plugin
Gestiona los plugins del sitio, incluyendo instalaciones, activaciones y actualizaciones.
post
Administra las entradas, el contenido y los meta.
post-type
Extrae los detalles de los tipos de entradas del sitio.
rewrite
Lista o refresca las reglas rewrite del sitio, actualiza la estructura de enlaces permanentes.
role
Gestiona roles de usuario, incluyendo crear nuevos roles y resetear los roles por defecto.
scaffold
Genera código para los tipos de entrada, taxonomías, plugins, temas hijo, etc.
search-replace
Busca/Reemplaza cadenas en la base de datos.
server
Configura el servidor web para esta instalación de WordPress mediante PHP.
shell
Abre una consola interactiva de PHP para testear código PHP.
sidebar
Lista las barras laterales registradas.
site
Gestiona un multisitio.
super-admin
Lista, añade o elimina usuarios super administradores en una instalación multisitio.
taxonomy
Extrae información sobre taxonomías registradas.
term
Gestiona los términos de taxonomías y meta, y crea, elimina y lista comandos.
theme
Administra los temas de los sitios, incluyendo instalaciones, activaciones y actualizaciones.
transient
Manipula la Cache Transitoria de WordPress
user
Administra usuarios junto a sus roles y capacidades.
widget
Gestiona widgets, incluyendo añadir y mover dichos widgets entre las barras laterales.

Estos son los comandos que se pueden utilizar, aunque cada comando tiene muchos subcomandos, que a su vez tienen otros tantos subcomandos.

Ahora vamos a poner algunos ejemplos de las miles de opciones que nos proporciona esta poderosa herramienta.

Verificar instalación de WordPress

Podemos testear nuestra instalación de WordPress para comprobar si nos falta algún fichero, o si algún fichero ha sido alterado.

Para realizar la comprobación:

wp checksum core --version=4.9.1 --locale=es_ES

Actualizar WP-CLI

Podemos comprobar la versión que tenemos de la interfaz por línea de comandos, si hay actualizaciones disponibles, actualizarla, etc.

Comprobar la versión actual:

wp cli version

Comprobar si hay actualizaciones disponibles:

wp cli check-update

Actualizar (se necesita tener permisos de escritura en el fichero wp):

wp cli update

Gestionar comentarios

También podemos aprobar un comentario, contar los comentarios de una entrada o todos los que hay en el sitio, crear o borrar un comentario, listar los comentarios, etc. Cada comentario tiene asignado un identificador, que es el que utilizamos para indicar sobre qué comentarios queremos trabajar).

Crear un comentario:

wp comment create --comment_post_ID=6 --comment_content="Hola mundo" --comment_author="Kevin"

Actualizar un comentario:

wp comment update 13 --comment_author="asdf"

Borrar un comentario:

wp comment delete 13 --force

Listar todos los comentarios:

wp comment list

Una forma útil de utilizar este comando es para borrar los comentarios marcados como spam:

wp comment delete $(wp comment list --status=spam --format=ids)

Administrar el fichero wp-config.php

Con este comando podemos generar el fichero en función de los parámetros que le indiquemos, obtener las variables indicadas en el fichero u obtener la ruta del fichero.

Generar el fichero:

wp config create --dbname=db_wordpress --dbuser=db_user --dbpass=db_pass --dbhost=localhost

Obtener las variables:

wp config get

Obtener la ruta:

wp config path

Gestionar el core de WordPress

Esta es una opciones que nos proporciona WP-CLI más importantes. Con ella puedes descargar WordPress, instalar y actualizar WordPress, entre otras cosas.

Comprobar si existe una actualización para WordPress:

wp core check-update

Descargar el paquete necesario de WordPress:

wp core download --version=4.9.1 --locale=es_ES

Comprobar si WordPress está instalado:

wp core is-installed

Convertir una instalación individual en una multi-sitio:

wp core multisite-convert --base=https:www.example1.com --subdomains="www.example2.com"

Instalar un multisitio:

wp core multisite-install url=http://ejemplo_wordpress.com --subdomains="www.example2.com" --title="Ejemplo WordPress" --admin_user=admin --admin_password=admin123 --admin_email=ej_wp@gmail.com

Actualizar WordPress:

wp core update

Actualizar la base de datos:

wp core update-db

Comprobar la versión actual de WordPress:

wp core version

Gestionar los cron de WordPress

Con esta opción podemos listar los cron, programar crons, cancelar tareas programadas, lanzar un cron, etc.

Listar los cron:

wp cron event list

Programar un cron:

wp cron event schedule cron_1 now hourly

Si no se pone el intervalo de tiempo (hourly) se ejecuta una sola vez. Listar los intervalos de tiempo:

wp cron event schedule list

Lanzar un cron:

wp cron event run cron_1

Para lanzar todos los que están marcados como 'now':

wp cron event run --due-now

El anterior se utiliza para aquellas instalaciones en las que no funcionan los cron de forma automática, o han sido bloqueados en el fichero wp-config.php.Para lanzar todos los cron:

wp cron event run --all

Borrar un cron:

wp cron event delete cron_1

Gestionar las bases de datos

Con el comando db podemos crear la base de datos que se indica en el fichero wp-config.php, pero para ello antes debemos darle al usuario indicado en wp-config.php permisos sobre dicha base de datos, por lo que es más óptimo crear la base de datos a mano e inmediatamente después darle permisos al usuario sobre dicha base de datos. Para crear la base de datos (después de darle permisos al usuario):

wp db create

Borrar la base de datos (--yes para saltarse el prompt):

wp db drop --yes

Reiniciar la base de datos (es necesario reinstalar wordpress):

wp db reset --yes

Comprobar el estado de la base de datos:

wp db check

Abrir sesión interactiva de mysql con las credenciales de wp-config.php:

wp db cli

Exportar base de datos (puedes poner el nombre al fichero que quieras):

wp db export db_wordpress.sql

Importar base de datos:

wp db import db_wordpress.sql

Optimizar base de datos:

wp db optimize

Mostrar el prefijo de las tablas:

wp db prefix

Ejecturar sentencia sql

wp db query "select * from wp_users"

Buscar una coincidencia en la base de datos

wp db search "asdf"

Mostrar el tamaño de la base de datos:

wp db size

Listar las tablas:

wp db tables

Testear código PHP

Podemos ejecutar código PHP en nuestra instalación con el comando:

wp eval "phpinfo();"

Para testear el código que queramos, introducidlo entre las comillas.

También podemos testear el código desde un fichero con el comando:

wp eval-file info.php

Cambiar idioma

Podemos instalar, desinstalar, listar, actualizar y activar idiomas.

Instalar un idioma:

wp language core install es_ES

Desinstalar un idioma:

wp language core uninstall es_ES

Listar los idiomas (útil para ver qué idioma y dialecto queremos instalar):

wp language core list

Actualizar las traducciones:

wp language core update

Activar un idioma:

wp language core activate es_ES

Gestionar medios

Podemos listar las imágenes que tenemos en WordPress, así como sus dimensiones con el comando:

wp media image-size

También podemos importar imágenes y otros ficheros con el comando:

wp media import cabecera_01.png

Y regenerar las miniaturas de las imágenes:

wp media regenerate

Podemos listar,crear, asignar y borrar los menús del tema actual. También podemos añadir o quitar subelementos de cada menú.

Listar los menus:

wp menu list

Crear un menú:

wp menu create "Principal"

Borrar un menú:

wp menu delete "Principal"

Añadir, borrar, etc un objeto de un menú:

wp menu item (add-custom | delete) "Elemento"

Administrar plugins

También podemos gestionar los plugins. Podemos activar, desactivar, borrar, listar, instalar, desinstalar y actualizar plugins.

Instalar un plugin:

wp plugin install wordpress-seo

Activar un plugin:

wp plugin activate wordpress-seo

Desactivar un plugin:

wp plugin deactivate wordpress-seo

Borrar un plugin:

wp plugin delete wordpress-seo

Desinstalar un plugin (el plugin debe estar desactivado):

wp plugin uninstall wordpress-seo

Actualizar un plugin:

wp plugin update wordpress-seo

Además de esto, también se puede instalar un plugin y activarlo al mismo tiempo con el comando:

wp plugin install wordpress-seo --activate

Administrar las entradas

Podemos crear una entrada a partir de un fichero, borrar, editar, listar y actualizar entradas.

Crear una nueva entrada a partir de un fichero:

wp post create entrada.txt

Borrar una entrada (se diferencian por el ID):

wp post delete 4

Editar una entrada:

wp post edit 4

Listart todas las entradas:

wp post list

Actualizar un post:

wp post update 4

Para listar los tipos de etiquetas:

wp post-type list

Reglas rewrite

Listar las rewrite utilizadas:

wp rewrite list

Hacer que las rewrite empiecen a ejecutarse:

wp rewrite flush

Gestionar roles

También podemos crear roles, así como borrar, listar y reiniciar.

Comprobar si un rol existe:

wp role exists editor

Listar los roles:

wp role list

Crear un nuevo rol:

wp role create Administrador_comentarios comment_manager

Borrar un rol:

wp role delete Administrador_comentarios

Reiniciar un rol a su estado inicial (sólo roles por defecto):

wp role reset editor

Scaffold

Este comando permite generar el código inicial para empezar a desarrollar un plugin, crea los ficheros necesarios para crear un tema hijo partiendo de un tema instalado,  etc.

Crear un tema hijo partiendo de uno ya instalado:

wp scaffold child-theme twentyseventeen_child --parent_theme=twentyseventeen

Generar código inicial al crear un plugin:

wp scaffold plugin nuevo_plugin

Reemplazar strings en la base de datos

Con el comando search-replace podemos reemplazar strings en la base de datos. Podemos hacer que se reemplace en toda la base de datos (por defecto), en una tabla, etc.

wp search-replace wordpress WordPress

Podemos listar las barras laterales que hay en el tema actual:

wp sidebar list

Administrar sitios

También podemos ejecutar subcomandos para gestionar los sitios en la misma instalación de WordPress. Para ello se debe indicar que el WordPress es un multisitio. Para ello hay que indicarlo a la hora de instalar WordPress:

wp core multisite-install ...

Crear un stio:

wp site create --slug=example1

Borrar un sitio:

wp site delete 12

Activar un sitio:

wp site activate example1

Desactivar un sitio:

wp site deactivate example1

Listar todos los sitios:

wp site list

También relacionado con los multisitios, podemos crear, borrar o listar super administradores con los comandos:

wp super-admin ( add | remove | list )

Si quieres ver más opciones, utiliza el argumento --help.

Gestionar taxonomías

Podemos obtener los detalles de una taxonomía con el comando:

wp taxonomy get category

Además podemos listar las taxonomías:

wp taxonomy list

Administrar Terms

Podemos administrar los terms del sitio (categorías, etiquetas, URLs, etc.)

Para crear un nuevo term:

wp term create category SEO --description="Categoría para los artículos relacionados con el SEO"

Listar las categorías:

wp term list category

Borrar categoría

wp term delete category 6

Administrar temas

Podemos instalar, activar, borrar, listar y actualizar los temas (uno en concreto, una lista o todos a la vez).

Para instalar un tema debemos indicar el nombre del tema:

wp theme install twentyfourteen

Activar el tema:

wp theme activate twentyfourteen

Borrar:

wp theme delete twentyfourteen

Listar temas:

wp theme list

Actualizar todos los temas:

wp theme update --all

Gestionar usuarios

Procederemos a comentar cómo gestionar usuarios. Podemos añadir privilegios a un usario, añadir un rol para un usuario, crear usuarios, borrar, listar, etc.

Listar usuarios:

wp user list

Crear un usuario

wp user create user1 user1@gmail.com --user_pass=user1

Borrar un usuario:

wp user delete user1

Añadir rol a un usuario:

wp user add-role user1 editor

Administrar widgets

Ahora vamos a comentar cómo se pueden gestionar los widgets.

Podemos añadir un widget a una barra lateral, desactivar, borrar, listar, mover un widget, reiniciar y por último actualizar los widgets.

Listar los widgets de una barra lateral:

wp  widget list sidebar-1

Añadir un widget:

wp widget add search-2 sidebar-1

Desactivar un widget:

wp widget deactivate search-2

Borrar un widget:

wp widget delete meta-2

Mover un widget:

wp widget move archives-2 --sidebar-id=sidebar-2

Para reiniciar una barra lateral, es decir, poner los widgets por defecto:

wp widget reset sidebar-1

Conclusión

WP-CLI es una herramienta realmente potente, pero requiere dedicarle algo de tiempo para entender cómo funciona.

Incluso teniendo una única instalación de WordPress se gana muchísima rapidez a la hora de administrar WordPress con WP-CLI que con la interfaz de WordPress, pero WP-CLI brilla cuando quieres administrar varios sitios en WordPress, pues puedes gestionar todos ellos simplemente accediendo al servidor (o servidores) por ssh, y utilizando wp-cli en cada instalación de forma individual. También es posible optimizar todavía más el rendimiento creando scripts para realizar las tareas en todas las instalaciones con una única ejecución del script. Un ejemplo sería crear un script en bash en el que se actualicen todas las instalaciones de WordPress de golpe.

En esencia, si administras uno o más sitios en WordPress, te interesa aprender a utilizar WP-CLI para ganar muchísima rapidez a la hora de gestionar WordPress, siempre y cuando tu hosting te permita el uso de WP-CLI.

¿Nos ayudas a mejorar la calidad del blog?
Déjanos una valoración sobre este post para poder seguir mejorando
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


* Campo obligatorio.