
Gestionar WordPress desde el panel gráfico (WP Admin) es cómodo… hasta que tienes que repetir la misma tarea en varios sitios, desactivar un plugin que ha roto la web o automatizar tareas rutinarias. Ahí es donde entra WP-CLI, la interfaz de línea de comandos oficial para WordPress, pensada para hacer lo mismo que el panel… y bastante más.
Este artículo repasa qué es WP-CLI, qué ventajas tiene frente a WP Admin y algunos comandos prácticos para administradores de sistemas, agencias y desarrolladores que gestionan uno o decenas de sitios WordPress.
WP-CLI (WordPress Command Line Interface) es una herramienta open source que permite gestionar WordPress desde la terminal, con comandos del tipo:
wp plugin update --all
wp post list
wp theme install twentytwentyfive --activate
Lenguaje del código: PHP (php)
En vez de hacer clic por varias pantallas en WP Admin, lanzas un comando y listo. Está pensado para:
Algunos hostings (incluyendo muchos proveedores gestionados y planes avanzados de plataformas como WordPress.com o similares) ya lo traen instalado por defecto. En otros, puedes instalarlo en el servidor y usarlo vía SSH.
Trabajar con WP-CLI no es “ir de friki”: es pura productividad y control. Entre sus ventajas:
wp plugin update --allwp post generate --count=10 --post_type=pagewp plugin deactivate --all y recuperar la web.La estructura básica es:
wp <comando> <subcomando> [argumentos] [--flags] [--flag=valor]
Lenguaje del código: CSS (css)
Ejemplos sencillos:
wp plugin listwp plugin update akismetwp plugin list --update=availablePuedes añadir --help a casi cualquier cosa para ver opciones:
wp plugin --help
wp post create --help
wp plugin list
Lenguaje del código: PHP (php)
Te devuelve una tabla con:
Solo activos:
wp plugin list --status=active
Lenguaje del código: PHP (php)
Solo los que tienen update disponible:
wp plugin list --update=available
Lenguaje del código: PHP (php)
Actualizar todos los plugins procedentes del repositorio oficial:
wp plugin update --all
Excluir uno que quieres revisar antes:
wp plugin update --all --exclude=akismet
Desde el directorio oficial de WordPress (usando el slug del plugin):
wp plugin install contact-form-7 --activate
Varios a la vez:
wp plugin install bbpress contact-form-7 akismet --activate
Desactivar uno:
wp plugin deactivate akismet
Desactivar todos:
wp plugin deactivate --all
Desactivar todos excepto algunos:
wp plugin deactivate --all --exclude=akismet,wordfence
Listar todas las entradas:
wp post list
Lenguaje del código: PHP (php)
Solo páginas:
wp post list --post_type=page
Lenguaje del código: PHP (php)
Entradas y páginas a la vez:
wp post list --post_type=post,page
Lenguaje del código: PHP (php)
Crear un post borrador:
wp post create --post_title="Creado con WP-CLI"
Lenguaje del código: JavaScript (javascript)
Crear páginas publicadas típicas en un proyecto nuevo:
wp post create --post_type=page --post_status=publish --post_title='Inicio' && \
wp post create --post_type=page --post_status=publish --post_title='Quiénes somos' && \
wp post create --post_type=page --post_status=publish --post_title='Contacto'
Lenguaje del código: JavaScript (javascript)
Ideal para tests de rendimiento o maquetación:
wp post generate --count=50 --post_type=post --post_status=publish
Con más control:
wp post generate --count=10 \
--post_type=page \
--post_status=draft \
--post_author=1 \
--post_date="2025-01-15 12:15:00"
Lenguaje del código: JavaScript (javascript)
Cambiar el autor de varias entradas (IDs 1, 25 y 60) al usuario 2:
wp post update 1 25 60 --post_author=2
Cambiar el autor de todas las entradas del autor 1 al 2:
wp post update $(wp post list --author=1 --format=ids) --post_author=2
Lenguaje del código: JavaScript (javascript)
Cambiar el estado de todas las publicadas a borrador:
wp post update $(wp post list --post_status=publish --format=ids) --post_status=draft
Lenguaje del código: JavaScript (javascript)
Borrar un post por ID:
wp post delete 649
Lenguaje del código: JavaScript (javascript)
Borrar varios:
wp post delete 649 300 150
Lenguaje del código: JavaScript (javascript)
Borrar todas las páginas:
wp post delete $(wp post list --post_type=page --format=ids)
Lenguaje del código: JavaScript (javascript)
Listar temas instalados:
wp theme list
Lenguaje del código: PHP (php)
Activar un tema:
wp theme activate twentytwentyfive
Instalar desde el repositorio y activar:
wp theme install hello-biz --activate
Actualizar todos los temas:
wp theme update --all
Excluir uno de la actualización:
wp theme update --all --exclude=twentytwenty
Ver comentarios marcados como spam:
wp comment list --status=spam
Lenguaje del código: PHP (php)
Borrarlos todos de golpe:
wp comment delete $(wp comment list --status=spam --format=ids)
Lenguaje del código: JavaScript (javascript)
La verdadera magia llega cuando combinas comandos en un script Bash. Por ejemplo, un archivo update.sh:
#!/bin/bash
wp plugin update --all
wp theme update --all
wp core update
Lenguaje del código: JavaScript (javascript)
Le das permisos de ejecución:
chmod +x update.sh
Lenguaje del código: CSS (css)
Y cada vez que quieras actualizar todo:
./update.sh
En entornos con muchos sitios, puedes añadir bucles y recorrer carpetas, aplicando WP-CLI a cada instalación.
Dominar WP-CLI convierte la gestión de WordPress en algo mucho más cercano a cómo trabajan los administradores de sistemas con otros stacks: reproducible, automatizable y fácil de integrar en scripts, CI/CD y tareas programadas.
Para un solo blog, puede parecer opcional. Para:
WP-CLI pasa de “curiosidad” a herramienta imprescindible.
Si todavía no lo has probado, el primer paso es simple: acceder por SSH a tu servidor, escribir:
wp cli version
y, si está instalado, empezar con algo inofensivo como:
wp plugin list
Lenguaje del código: PHP (php)
A partir de ahí, cuesta muy poco tiempo cogerle el truco… y cuesta mucho volver a vivir sin él.
