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
| Tarea | Comando |
|---|---|
| Actualizar WordPress | wp core update |
| Actualizar todos los plugins | wp plugin update --all |
| Actualizar todos los temas | wp theme update --all |
| Exportar base de datos | wp db export backup.sql |
| Importar base de datos | wp db import backup.sql |
| Buscar y reemplazar URL | wp search-replace 'url-vieja' 'url-nueva' |
| Listar usuarios | wp user list |
| Crear usuario administrador | wp user create user email --role=administrator |
| Cambiar contraseña | wp user update ID --user_pass=nueva |
| Vaciar caché | wp cache flush |
| Optimizar base de datos | wp db optimize |
| Modo mantenimiento ON | wp maintenance-mode activate |
| Modo mantenimiento OFF | wp maintenance-mode deactivate |
| Regenerar miniaturas | wp media regenerate --yes |
| Ver cron jobs | wp cron event list |
| Verificar integridad WP | wp 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.
