WP-CLI es la interfaz de línea de comandos oficial de WordPress. En lugar de hacer clics por wp-admin, escribes comandos en un terminal del servidor: wp core update actualiza WordPress, wp plugin update --all actualiza todos los plugins, wp db export hace una copia de la base de datos, wp search-replace cambia un dominio en todo el sitio sin corromper los datos serializados. El proyecto lo iniciaron en 2011 Andrés Cifuentes y Cristi Burcă, hoy se mantiene como proyecto oficial de WordPress.org y se ha convertido en la herramienta estándar detrás del mantenimiento profesional de WordPress, de la automatización del alojamiento y de las cadenas de despliegue. El argumento práctico es sencillo: todo lo que hace wp-admin, WP-CLI lo hace más rápido, más una larga lista de cosas que wp-admin no puede hacer en absoluto, como verificar los archivos del núcleo frente a las sumas de comprobación oficiales tras un hackeo sospechado, arreglar un sitio cuya administración es inalcanzable por un error fatal, o ejecutar el mismo script de mantenimiento en cincuenta sitios antes de que se te enfríe el café.
¿Qué es WP-CLI y quién lo mantiene?
WP-CLI es una aplicación PHP que carga WordPress en el terminal y expone su funcionalidad como comandos. Como arranca la instalación real de WordPress, trabaja con tus datos reales, tus plugins instalados y tu configuración, no con una simulación de todo eso. El proyecto vive en wp-cli.org y en GitHub, las versiones se coordinan con el proyecto WordPress y la referencia de comandos del manual para desarrolladores de WordPress documenta cada comando integrado.
Los requisitos son modestos: acceso SSH al servidor, PHP en la línea de comandos y un entorno de tipo UNIX (Linux, macOS o Windows a través de WSL). Ese primer requisito es el único guardián de verdad. En un alojamiento compartido sin acceso SSH no puedes usar WP-CLI, mientras que la mayoría de los alojamientos WordPress gestionados no solo lo permiten, sino que lo traen preinstalado.
Cómo instalar WP-CLI
Antes de instalar nada, comprueba si ya está ahí. En muchos alojamientos, escribir wp --info en una sesión SSH responde a la pregunta. Si no, la instalación es cosa de dos minutos, porque WP-CLI se distribuye como un único archivo Phar:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Verificar la instalación
wp --infoPara el desarrollo local rara vez necesitas instalarlo a mano, ya que Local, DDEV, Lando y el oficial wp-env incluyen WP-CLI. Una vez instalado, los comandos se ejecutan desde el directorio raíz de WordPress, o desde cualquier sitio usando la opción --path que apunta a la instalación.
Comandos WP-CLI imprescindibles para el día a día
La estructura de comandos siempre es wp, un tema, un subcomando y opciones. Un recorrido por los que soportan la mayor parte del mantenimiento real:
# Núcleo: comprobar, actualizar, verificar
wp core version
wp core update
wp core verify-checksums
# Plugins: listar, instalar, actualizar todo
wp plugin list
wp plugin install wordpress-seo --activate
wp plugin update --all
# Los temas funcionan igual
wp theme list
wp theme update --all
# Usuarios: crear, listar, restablecer una contraseña
wp user list
wp user create anna anna@example.com --role=editor
wp user update admin --user_pass="new-strong-password"
# Base de datos: exporta antes de tocar nada
wp db export backup-$(date +%F).sql
wp db size --human-readableDos detalles hacen que los comandos de listado sean más útiles de lo que parecen. Cada listado acepta filtros y formatos de salida, así que wp plugin list --update=available --format=csv te da un informe legible por máquina de las actualizaciones pendientes. Y wp core verify-checksums compara cada archivo del núcleo con las sumas de comprobación oficiales de WordPress.org, lo que convierte la vaga pregunta de si alguien ha modificado mis archivos del núcleo en un sí o un no en cinco segundos. Es uno de los primeros comandos que merece la pena ejecutar en cualquier sitio del que sospeches que fue comprometido.
Search-replace: el comando que compensa toda la instalación
La función que convierte a la mayoría de los escépticos es wp search-replace. Cambiar de dominio, pasar de staging a producción o migrar a HTTPS exigen sustituir URL por toda la base de datos. Hacerlo con SQL en crudo rompe WordPress, porque los temas, los plugins y los widgets guardan sus ajustes como datos PHP serializados, donde cada cadena lleva delante su longitud. Sustituye http por https en una cadena serializada mediante SQL y la longitud almacenada deja de coincidir, así que WordPress descarta en silencio todo el ajuste. WP-CLI deserializa los datos, sustituye el valor, los vuelve a serializar con las longitudes correctas y los escribe de nuevo:
# Primero en seco: muestra lo que cambiaría, no cambia nada
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --dry-run
# La ejecución real, con un informe por tabla
wp search-replace 'http://old-domain.com' 'https://new-domain.com' --report-changed-onlyLa opción --dry-run merece un sitio permanente en tu memoria muscular. Responde a qué pasaría antes de que pase nada, que es justo el paso de confirmación que el resto de WP-CLI no tiene.
WP-CLI para mantenimiento y resolución de problemas
Un puñado de comandos resuelve problemas que por el navegador son genuinamente dolorosos:
- Administración rota tras una actualización. Un error fatal de un plugin puede dejarte fuera de wp-admin por completo. wp plugin deactivate broken-plugin funciona igualmente, porque WP-CLI no necesita que la interfaz de administración se renderice.
- Inspección del cron. wp cron event list muestra cada tarea programada con su próxima ejecución, y wp cron event run --due-now ejecuta las vencidas. Depurar el pseudo-cron de WordPress sin esto es adivinar.
- Limpieza de transients. wp transient delete --expired elimina los transients caducados que hinchan la tabla de opciones en los sitios más veteranos.
- Vaciado de caché. wp cache flush vacía la caché de objetos, útil tras los despliegues cuando Redis o Memcached sirven datos obsoletos.
- Reglas de reescritura. wp rewrite flush arregla el clásico síntoma del 404 tras una migración sin pasar por la página de ajustes de enlaces permanentes.
Automatizar WordPress con scripts y alias de WP-CLI
Como cada comando se puede meter en un script, WP-CLI convierte el mantenimiento recurrente en archivos en lugar de en recuerdos. Una rutina semanal de actualización se vuelve un pequeño script de shell: exportar la base de datos, actualizar el núcleo, los plugins y los temas, verificar las sumas de comprobación y listo. El mismo script se ejecuta desde una tarea cron o una cadena de CI, y un bucle sobre una lista de rutas de instalación mantiene toda una cartera de sitios.
#!/bin/bash
# Mantenimiento semanal mínimo para un sitio
wp db export ~/backups/backup-$(date +%F).sql
wp core update
wp plugin update --all
wp theme update --all
wp core verify-checksumsPara trabajar entre entornos, WP-CLI admite alias en un archivo wp-cli.yml. Define una vez @staging y @production con sus datos SSH y luego wp @staging plugin list se ejecuta en remoto desde tu terminal local. Combinado con la opción --ssh, el terminal de tu portátil se convierte en la sala de control de todos los sitios WordPress que gestionas.
Consejos de seguridad con WP-CLI
La eficiencia corta por los dos lados: los comandos se ejecutan de inmediato y no hay deshacer. Unas cuantas costumbres evitan que la herramienta potente se convierta en un problema potente:
- Exporta antes de los comandos destructivos. wp db export cuesta segundos y convierte un desastre en una molestia. Comandos como db reset, site empty y search-replace merecen uno cada vez.
- Ejecución en seco cuando se ofrezca. search-replace tiene --dry-run exactamente por este motivo.
- No lo ejecutes como root. WP-CLI avisa a gritos, porque un proceso propiedad de root ejecuta el código PHP del sitio con todos los permisos del sistema y crea archivos que la persona usuaria del servidor web no puede tocar. Ejecútalo con el mismo usuario bajo el que corre el sitio.
- Staging primero. Cualquier comando que no hayas usado nunca se gana su estreno en producción sobre una copia.
WP-CLI e InspectWP: hallazgos que entran, soluciones que salen
Un informe de InspectWP te dice qué necesita atención en un sitio WordPress: una versión del núcleo desactualizada, plugins con actualizaciones pendientes o vulnerabilidades conocidas, temas que se han quedado atrás. WP-CLI es la forma más rápida de actuar sobre esos hallazgos, ya que wp core update y wp plugin update --all resuelven el grueso en menos de un minuto, y wp core verify-checksums vuelve a comprobar la integridad cuando un informe plantea dudas de seguridad. Los dos forman un ciclo natural para quien mantiene sitios WordPress de forma profesional: los informes programados de InspectWP sacan a la luz el trabajo, una sesión de WP-CLI lo despacha y el siguiente informe confirma la corrección.