Blog personal de IT, viajes y otros hobbies

Regenerar thumbnails de WordPress con WP-CLI y en Batch

Regenera tus Thumbnails de WordPress con WP-CLI y en batch

Trabajando para un proyecto muy grande me surgió la necesidad de regenerar las imágenes de WordPress en producción. Es sabido que esto es una tarea muy dura ya que consume mucho recursos de procesador para eliminar y crear nuevamente todas las imágenes. Es ahí donde empecé a buscar posibles soluciones de regeneración por batch:

  • Utilizar un plugin que regenere imágenes en batch: Existen pero descarté esta idea porque son de pago y además consumen más recursos ya que hay que hacer todo desde el administrador de WordPress.
  • Utilizar WP-CLI: Esta es la opción más adecuada para la tarea aunque no tiene ninguna opción para regenerar cierto conjunto de imágenes, esperar un tiempo y volver a regenerar imágenes.

Lancé la pregunta a Twitter buscando que algún programador de la Comunidad se haya topado con esta necesidad. Y al igual que las Meetups «Si no existe, tienes que crearla tú«. Así que me puse manos a la obra y creé el proceso bash para regenerar imágenes de WordPress sin sobrecargar el procesador.

El código

El proceso se pone en marcha cuando ejecutamos la siguiente línea desde nuestra terminal:

bash wp-media-regenerate-batch.sh

Opciones

-u: Nombre de usuario la base de datos
-d: Nombre de la base de datos
-p: Contraseña de la base de datos
-s: <opcional> Nombre del tamaño de la imagen a regenerar (large, medium-large, medium, thumbnail o uno personalizado)
-e: <opcional> Argumento para indicar cada cuantos ficheros regenerados se debe realizar una pausa. Por defecto es cada 10 ficheros regenerados.
-t: <opcional> Argumento para especificar la cantidad de segundos que debe esperar el proceso antes de recomenzar. Por defecto son 10 segundos.

Ejemplo de uso:

bash wp-media-regenerate-batch.sh -d mibasededato -u root -p root -s large
wp media regenerate batch ejemplo
Ejemplo del comando ejecutándose…

Código fuente

Anterior

WordCamp Irun 2018, un pequeño gigante

Siguiente

¿A ti cómo te gusta el café?

  1. Me convences, como no podía ser de otra manera. 🙂

  2. Grande. Se me ocurre que se podría hacer con un script más sencillo o incluso manualmente usando este código:
    »’
    # Re-generate all thumbnails that have IDs between 1000 and 2000.
    $ seq 1000 2000 | xargs wp media regenerate
    Found 4 images to regenerate.
    1/4 Regenerated thumbnails for «Vertical Featured Image» (ID 1027).
    2/4 Regenerated thumbnails for «Horizontal Featured Image» (ID 1022).
    3/4 Regenerated thumbnails for «Unicorn Wallpaper» (ID 1045).
    4/4 Regenerated thumbnails for «I Am Worth Loving Wallpaper» (ID 1023).
    Success: Regenerated 4 of 4 images.
    »’
    Sacado de https://developer.wordpress.org/cli/commands/media/regenerate/

    • No puedes hacer eso por los siguientes motivos:
      – Primero porque propones un proceso manual y yo estoy buscando una solución para cientos de miles de imágenes. Tiene que ser automatizado sí o sí.
      – Con ese comando estás dando por echo que entre los ID’s 1000 y 2000 son todas imágenes cuando no es así. Puede haber ID’s de post, pages, CPT’s, etc etc. Esto genera una pérdida de tiempo y de recursos muy grande.
      – El comando seq no es más optimo, ejecuta uno por uno (ID por ID) el comando ‘wp media regenerate’

      ¿Te convenzo? 😛
      Un abrazo Ángel!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Funciona con WordPress & Tema de Anders Norén