WP-CLI: el manual completo para gestionar WordPress desde la terminal

Si gestionas uno o varios sitios WordPress, WP-CLI puede ahorrarte horas de trabajo al mes. Es la interfaz de línea de comandos oficial de WordPress: una herramienta que permite hacer desde la terminal casi cualquier cosa que harías desde el panel de administración, pero mucho más rápido, sin abrir el navegador y con la posibilidad de automatizar tareas.

Esta guía cubre todo lo que necesitas saber: desde la instalación hasta los comandos más avanzados, con ejemplos reales listos para copiar y usar.


Qué es WP-CLI y para qué sirve

WP-CLI (WordPress Command Line Interface) es una herramienta oficial del equipo de WordPress que permite interactuar con cualquier instalación de WordPress directamente desde la terminal de tu servidor o de tu ordenador.

Con WP-CLI puedes:

  • Instalar, actualizar y eliminar WordPress, plugins y temas sin entrar al panel de administración.
  • Gestionar usuarios, entradas, páginas y opciones de la base de datos.
  • Ejecutar búsquedas y reemplazos en la base de datos (muy útil en migraciones).
  • Limpiar caché, regenerar miniaturas de imágenes y reparar la base de datos.
  • Automatizar tareas repetitivas con scripts de shell.
  • Gestionar múltiples sitios WordPress desde una sola sesión de terminal.

Es especialmente útil para desarrolladores, administradores de sistemas y cualquier persona que gestione más de un sitio WordPress. Para aprovecharlo al máximo necesitas acceso SSH a tu servidor — algo que viene incluido en todos los planes de hosting de BlumHost, tanto en hosting compartido como en VPS.


Instalación de WP-CLI

En un servidor Linux (VPS o servidor dedicado)

La forma recomendada es descargar el archivo PHAR oficial y moverlo a una ubicación del PATH del sistema para poder ejecutarlo desde cualquier directorio:

bash

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Verifica que la instalación es correcta:

bash

wp --info

Deberías ver información sobre la versión de WP-CLI, PHP y el sistema operativo.

En hosting compartido con acceso SSH

Si tu hosting ofrece acceso SSH, el proceso es el mismo. Conéctate con tu cliente habitual (Terminal en Mac/Linux, PuTTY o Windows Terminal en Windows) y ejecuta los comandos anteriores.

Si no tienes permisos para escribir en /usr/local/bin, puedes instalar WP-CLI en tu directorio de usuario:

bash

mkdir -p ~/bin
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mv wp-cli.phar ~/bin/wp
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Actualizar WP-CLI

bash

wp cli update

Para ver la versión instalada:

bash

wp cli version

Estructura básica de los comandos

Los comandos de WP-CLI siguen siempre la misma estructura:

wp <comando> <subcomando> [opciones] [--flag]

Por ejemplo:

bash

wp plugin install contact-form-7 --activate

Donde wp es la herramienta, plugin es el comando, install es el subcomando, contact-form-7 es el argumento y --activate es una opción para activar el plugin tras instalarlo.

Si tienes varias instalaciones de WordPress en el mismo servidor, usa --path=/ruta/a/wordpress para indicar cuál es el sitio objetivo. Si ejecutas el comando desde el directorio de la instalación, no hace falta especificarlo.


Comandos esenciales: los que usarás cada día

Información del sitio

bash

# Ver la versión de WordPress instalada
wp core version

# Ver información completa del entorno
wp --info

# Verificar la integridad de los archivos de WordPress
wp core verify-checksums

Gestión del núcleo de WordPress

bash

# Actualizar WordPress a la última versión
wp core update

# Actualizar la base de datos tras una actualización del núcleo
wp core update-db

# Descargar WordPress en español
wp core download --locale=es_ES

# Instalar WordPress desde cero
wp core install \
  --url="https://tudominio.com" \
  --title="Mi sitio" \
  --admin_user="admin" \
  --admin_password="contraseña-segura" \
  --admin_email="correo@tudominio.com"

Gestión de plugins

bash

# Listar todos los plugins instalados
wp plugin list

# Instalar un plugin
wp plugin install nombre-del-plugin

# Instalar y activar en un solo paso
wp plugin install nombre-del-plugin --activate

# Instalar desde un archivo ZIP local
wp plugin install /ruta/al/plugin.zip --activate

# Actualizar un plugin específico
wp plugin update nombre-del-plugin

# Actualizar todos los plugins de una vez
wp plugin update --all

# Desactivar un plugin
wp plugin deactivate nombre-del-plugin

# Eliminar un plugin
wp plugin delete nombre-del-plugin

# Ver plugins con actualizaciones pendientes
wp plugin status

Gestión de temas

bash

# Listar temas instalados
wp theme list

# Instalar un tema
wp theme install nombre-del-tema

# Instalar y activar
wp theme install nombre-del-tema --activate

# Actualizar todos los temas
wp theme update --all

# Eliminar un tema
wp theme delete nombre-del-tema

Gestión de usuarios

bash

# Listar usuarios
wp user list

# Crear un nuevo usuario
wp user create nombre correo@ejemplo.com --role=editor

# Crear un administrador
wp user create admin2 admin2@ejemplo.com --role=administrator --user_pass=contraseña-segura

# Cambiar la contraseña de un usuario
wp user update 1 --user_pass=nueva-contraseña

# Cambiar el rol de un usuario
wp user update 1 --role=editor

# Eliminar un usuario reasignando su contenido
wp user delete 2 --reassign=1

Gestión de contenido

bash

# Listar entradas publicadas
wp post list

# Listar páginas
wp post list --post_type=page

# Crear una entrada
wp post create --post_title="Título de la entrada" --post_status=publish --post_type=post

# Eliminar una entrada por su ID
wp post delete 42

# Vaciar la papelera de un golpe
wp post delete $(wp post list --post_status=trash --format=ids) --force

Comandos avanzados: los que marcan la diferencia

Búsqueda y reemplazo en la base de datos

Este es uno de los comandos más potentes de WP-CLI, especialmente en migraciones o cuando cambias el dominio de un sitio:

bash

# Simular el cambio sin ejecutarlo (imprescindible antes de hacer el cambio real)
wp search-replace 'http://dominio-antiguo.com' 'https://dominio-nuevo.com' --dry-run

# Ejecutar el reemplazo
wp search-replace 'http://dominio-antiguo.com' 'https://dominio-nuevo.com'

# Reemplazar solo en tablas específicas
wp search-replace 'texto-antiguo' 'texto-nuevo' wp_posts wp_postmeta

# Reemplazar excluyendo la tabla de opciones
wp search-replace 'http://local.test' 'https://produccion.com' --skip-tables=wp_options

El comando search-replace de WP-CLI gestiona correctamente los datos serializados de PHP — algo que un simple buscar/reemplazar en SQL rompería. Úsalo siempre para cambios de URL en lugar de hacerlo manualmente en phpMyAdmin.

Gestión de la base de datos

bash

# Optimizar todas las tablas
wp db optimize

# Reparar la base de datos
wp db repair

# Exportar la base de datos con fecha en el nombre
wp db export backup-$(date +%Y%m%d).sql

# Importar un archivo SQL
wp db import backup.sql

# Ejecutar una consulta SQL directamente
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_status='publish'"

# Ver el tamaño de cada tabla
wp db size --tables

Gestión de caché

bash

# Vaciar la caché de WordPress
wp cache flush

# Con WP Rocket
wp rocket clean --confirm

# Con W3 Total Cache
wp w3-total-cache flush all

# Con LiteSpeed Cache
wp litespeed-purge all

Gestión de opciones del sitio

bash

# Ver el valor de una opción
wp option get siteurl
wp option get blogname

# Cambiar el nombre del sitio
wp option update blogname "Nuevo nombre del sitio"

# Actualizar la URL del sitio (tras una migración)
wp option update siteurl 'https://nuevo-dominio.com'
wp option update home 'https://nuevo-dominio.com'

Regenerar miniaturas de imágenes

Útil cuando cambias de tema y el nuevo usa tamaños de imagen diferentes:

bash

# Regenerar todas las miniaturas
wp media regenerate --yes

# Regenerar solo un tamaño específico
wp media regenerate --image_size=thumbnail --yes

Gestión del modo mantenimiento

bash

# Activar modo mantenimiento
wp maintenance-mode activate

# Desactivar modo mantenimiento
wp maintenance-mode deactivate

# Comprobar el estado
wp maintenance-mode status

Gestión de cron jobs de WordPress

bash

# Ver todos los eventos programados
wp cron event list

# Ejecutar manualmente los eventos pendientes
wp cron event run --due-now

# Eliminar un evento cron específico
wp cron event delete nombre_del_evento

# Ver los schedules disponibles
wp cron schedule list

Comandos para WordPress Multisite

bash

# Listar todos los sitios de la red
wp site list

# Crear un nuevo sitio en la red
wp site create --slug=nuevo-sitio --title="Nuevo Sitio" --email=admin@ejemplo.com

# Actualizar plugins en todos los sitios de la red de una sola vez
wp site list --field=url | xargs -I {} wp --url={} plugin update --all

# Activar un plugin en toda la red
wp plugin activate nombre-del-plugin --network

Scripts útiles: automatizar con WP-CLI

Una de las mayores ventajas de WP-CLI es combinar comandos en scripts de shell para automatizar tareas repetitivas.

Script de actualización masiva de sitios

bash

#!/bin/bash
# actualizar-wordpress.sh

SITIOS=(
  "/var/www/sitio1/public_html"
  "/var/www/sitio2/public_html"
  "/var/www/sitio3/public_html"
)

for SITIO in "${SITIOS[@]}"; do
  echo "=== Actualizando: $SITIO ==="
  wp --path="$SITIO" core update
  wp --path="$SITIO" plugin update --all
  wp --path="$SITIO" theme update --all
  wp --path="$SITIO" core update-db
  echo "=== $SITIO actualizado ==="
done

Script de backup antes de actualizar

bash

#!/bin/bash
# backup-antes-actualizar.sh

SITIO="/var/www/miweb/public_html"
FECHA=$(date +%Y%m%d-%H%M%S)
BACKUP_DIR="/backups/wordpress"

mkdir -p "$BACKUP_DIR"

wp --path="$SITIO" db export "$BACKUP_DIR/db-$FECHA.sql"
tar -czf "$BACKUP_DIR/files-$FECHA.tar.gz" "$SITIO"

echo "Backup completado en $BACKUP_DIR"

wp --path="$SITIO" core update
wp --path="$SITIO" plugin update --all

Script de limpieza de la base de datos

bash

#!/bin/bash
# limpiar-wordpress.sh

SITIO="/var/www/miweb/public_html"

# Eliminar revisiones de entradas
wp --path="$SITIO" post delete \
  $(wp --path="$SITIO" post list --post_type=revision --format=ids) \
  --force 2>/dev/null

# Vaciar papelera
wp --path="$SITIO" post delete \
  $(wp --path="$SITIO" post list --post_status=trash --format=ids) \
  --force 2>/dev/null

# Eliminar comentarios spam
wp --path="$SITIO" comment delete \
  $(wp --path="$SITIO" comment list --status=spam --format=ids) \
  --force 2>/dev/null

wp --path="$SITIO" db optimize
wp --path="$SITIO" cache flush

echo "Limpieza completada para $SITIO"

Solución de problemas frecuentes

«Error: This does not seem to be a WordPress installation»
WP-CLI no encuentra el directorio de WordPress. Comprueba que estás en el directorio correcto o usa --path=/ruta/completa explícitamente.

«Error establishing a database connection»
Las credenciales de la base de datos en wp-config.php son incorrectas o el servidor MySQL no está accesible. Verifica los valores de DB_NAME, DB_USER, DB_PASSWORD y DB_HOST.

«PHP Fatal error» al ejecutar comandos
La versión de PHP que usa la CLI puede ser diferente a la del servidor web. Especifica la versión directamente:

bash

/usr/local/bin/php81 /usr/local/bin/wp plugin list

O añade un alias en tu .bashrc:

bash

alias wp='/usr/local/bin/php81 /usr/local/bin/wp'

Permisos denegados en archivos
Puede haber diferencias entre el usuario de SSH y el del servidor web. Verifica que el usuario con el que te conectas por SSH tiene permisos sobre los archivos de WordPress.


Referencia rápida de comandos

TareaComando
Actualizar WordPresswp core update
Actualizar todos los pluginswp plugin update --all
Actualizar todos los temaswp theme update --all
Exportar base de datoswp db export backup.sql
Importar base de datoswp db import backup.sql
Buscar y reemplazar URLwp search-replace 'url-vieja' 'url-nueva'
Listar usuarioswp user list
Crear usuario administradorwp user create user email --role=administrator
Cambiar contraseñawp user update ID --user_pass=nueva
Vaciar cachéwp cache flush
Optimizar base de datoswp db optimize
Modo mantenimiento ONwp maintenance-mode activate
Modo mantenimiento OFFwp maintenance-mode deactivate
Regenerar miniaturaswp media regenerate --yes
Ver cron jobswp cron event list
Verificar integridad WPwp core verify-checksums

Conclusión

WP-CLI transforma la forma en que gestionas WordPress. Lo que en el panel de administración supone varios clics y esperas, desde la terminal son uno o dos comandos que se ejecutan en segundos. Y la posibilidad de automatizar esas tareas con scripts convierte WP-CLI en una herramienta imprescindible para cualquiera que gestione más de un sitio.

El único requisito es tener acceso SSH al servidor. Si tu hosting actual no lo incluye, es uno de esos criterios que vale la pena tener en cuenta la próxima vez que evalúes un proveedor — porque sin SSH, te quedas sin acceso a una de las herramientas más potentes del ecosistema WordPress.

Miguel Taboada

Ingeniero en Telecomunicaciones e Informática. Creé BlumHost para ofrecer un hosting distinto a los demás, que ofrezca la mejor atención al cliente, al menor precio y con la mejor calidad.

Ver todas las entradas

Deja una respuesta

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