
Uso de WP-CLI para regenerar miniaturas de imágenes masivamente
Regenerar miniaturas en WordPress puede ser necesario tras cambiar tamaños de imagen, activar un tema nuevo o mover a WebP/AVIF. Con WP-CLI es posible ejecutar esta tarea masiva de forma controlada, rápida y segura desde la línea de comandos. En esta guía técnica y práctica verás comandos, ejemplos por lotes, consideraciones de servidor y SEO, y cómo minimizar impacto en producción.
¿Por qué usar WP-CLI para regenerar miniaturas?
WP-CLI evita las limitaciones de los procesos basados en navegador (timeouts, memoria, interrupciones) y permite:
- Automatizar y repetir la tarea en entornos de staging y producción.
- Regenerar sólo imágenes faltantes o tamaños concretos.
- Integrar el proceso en scripts, cron o pipelines de despliegue.
- Controlar el rendimiento con batching y opciones de eliminación.
Preparación y buenas prácticas antes de ejecutar
- Hacer copia de seguridad de archivos y base de datos.
- Comprobar versión de WP-CLI con el comando wp –version.
- Trabajar sobre un entorno de staging antes de producción.
- Verificar espacio en disco: regenerar puede duplicar archivos temporalmente.
- Incrementar límites PHP si es necesario (memory_limit y max_execution_time).
Comprobación rápida de recursos
En SSH, antes de lanzar un proceso masivo comprueba:
df -h free -m php -v
Si usas PHP con GD o Imagick, revisa la extensión en el servidor. Más información sobre la extensión GD en PHP.net.
Comandos básicos de WP-CLI para regenerar miniaturas
El comando central es wp media regenerate. Algunos ejemplos prácticos:
- Regenerar todas las miniaturas (prompt de confirmación):
wp media regenerate
- Forzar sin confirmación (útil en scripts):
wp media regenerate --yes
- Regenerar sólo las miniaturas que faltan:
wp media regenerate --only-missing --yes
- Regenerar un attachment concreto (por ID):
wp media regenerate 1234 --yes
- Regenerar sólo un tamaño registrado (slug del tamaño):
wp media regenerate --image_size=medium --yes
- No eliminar los tamaños antiguos (mantener copias previas):
wp media regenerate --skip-delete --yes
Regeneración masiva: técnicas y ejemplos reales
Cuando el sitio tiene miles de imágenes conviene ejecutar por lotes para evitar límites de argumentos y reducir impacto en I/O. Dos patrones útiles:
1) Usar la lista de IDs y xargs (Linux GNU xargs)
Este método obtiene los IDs de attachments y los procesa en bloques. Ejemplo:
wp post list --post_type=attachment --post_mime_type=image --format=ids | xargs -d ' ' -n 100 wp media regenerate --yes
Explicación:
- –format=ids devuelve una lista separada por espacios.
- xargs -n 100 llama a wp media regenerate con 100 IDs a la vez, reduciendo sobrecarga.
2) Batching seguro usando while/read (más portable)
Si tu sistema no tiene xargs con -d, usa un bucle en bash:
wp post list --post_type=attachment --post_mime_type=image --format=ids | tr ' ' '\n' | while read id; do
ids="$ids $id"
if [ $(echo "$ids" | wc -w) -ge 50 ]; then
wp media regenerate $ids --yes
ids=''
fi
done
if [ -n "$ids" ]; then
wp media regenerate $ids --yes
fi
Este script agrupa en paquetes de 50 IDs; ajusta el tamaño según memoria y CPU.
Multisite y entornos con varias URL
En una instalación multisitio puedes ejecutar WP-CLI por sitio con la opción --url o iterando sites:
wp site list --field=url | while read url; do wp --url="$url" media regenerate --only-missing --yes done
Evita lanzar una regeneración network-wide en un único comando sin pruebas previas. Ejecuta en staging cada site representativo.
Rendimiento y límites del servidor
La regeneración crea operaciones CPU/IO intensivas; controla estos puntos:
- CPU: imagick puede consumir más CPU que GD pero produce mejor calidad. Revisa documentación PHP.
- Disco: ten al menos un 20–30% de espacio libre antes de comenzar.
- I/O: ejecuta en horarios de baja carga o limita concurrencia con scripts.
- Timeouts: WP-CLI evita timeouts de PHP en muchos casos, pero la CLI también depende de límites del sistema.
Consejos de optimización
- Regenera primero con
--only-missingpara generar sólo lo que falta. - Usa
--skip-deletesi necesitas conservar versiones antiguas hasta verificar. - Divide en batches pequeños (50–200) y monitoriza uso de CPU y disco.
- Ejecuta dentro de screen o tmux para evitar interrupciones del SSH.
Impacto SEO y mejores prácticas de imagen
Regenerar miniaturas no altera por sí mismo atributos SEO (alt, title, srcset), pero sí puede cambiar rutas si mezclas nombres/versiones o cambias formato a WebP/AVIF. Verifica lo siguiente:
- Conserva atributos alt y titles en la base de datos.
- Recrea los srcset para imágenes responsive; WordPress lo hace automáticamente si las miniaturas existen.
- Optimiza las imágenes después de regenerar (compresión sin pérdida/convertir a WebP). Para prácticas de optimización consulta la guía de Google Developers sobre imágenes: developers.google.com.
- Revisa impacto SEO con herramientas como la guía de Moz sobre optimización de imágenes: moz.com.
Errores comunes y cómo solventarlos
- Fallo por memoria: aumenta memory_limit en php.ini o ejecuta con batches más pequeños.
- Permisos de archivos: asegúrate de que el usuario que ejecuta WP-CLI tenga permisos para escribir en wp-content/uploads.
- Imágenes corruptas: identifica con logs y excluye IDs problemáticos usando filtros o listas de exclusión.
- Bloqueo por antivirus/antimalware del servidor: revisa logs y desactiva escaneos temporales si es seguro.
Flujo recomendado paso a paso
- Backup completo (archivos + base de datos).
- Probar en staging: ejecutar
wp media regenerate --only-missing --yes. - Monitorizar uso de CPU, RAM y disco durante la prueba.
- En producción, ejecutar por lotes con xargs o scripts y mantener registro de IDs procesados.
- Verificar front-end: comprobar srcset, tiempos de carga y enlaces rotos.
Conclusión
WP-CLI es la herramienta más fiable para regenerar miniaturas masivamente en WordPress: ofrece control, velocidad y repetibilidad que los procesos basados en navegador no pueden igualar. Siguiendo buenas prácticas —backups, batching, monitorización y pruebas en staging— minimizarás riesgos y optimizarás la experiencia de usuario y SEO. Antes de convertir formatos (a WebP o AVIF) o eliminar tamaños antiguos, valida en un entorno de pruebas y mantén un plan de reversión. Para aspectos técnicos de procesamiento de imágenes revisa la documentación de PHP sobre imágenes en PHP.net y consulta guías de optimización de imágenes en Google Developers.