Cron para WordPress MultiSite

Una de las recomendaciones habituales que se hacen para WordPress para una mejor optimización es la de no usar el sistema de WP-Cron nativo, sino que hacer llamadas mediante un programador de tareas.

Y aunque existen múltiples formas de hacer las peticiones para los crones, la óptima es usar WP-CLI.

En un WordPress simple podríamos hacer una petición tal que así:

*/5 * * * * wp cron event run --due-now --path=/home/example.com/ >/dev/null 2>&1

Este código lanzaría todos los hooks pendientes cada 5 minutos.

Pero, en un WordPress MultiSite hay que tener presente que cada uno de los subsitios ha de lanzar su propio cron… y, si tienes 3 o 4 controlados, pues podrías añadir esas 3 o 4 líneas en el cron… pero ¿qué pasa si tienes sitios que se van creando o van archivando?

En este caso podemos hacer un pequeño script que sea el que se encargue de hacer las peticiones. Por ejemplo podemos guardarlo como cron.sh.

#!/bin/bash
WP_PATH="/webs/example.com/"

SITE_URLS=`php "$(which wp)" site list --fields=url --archived=0 --deleted=0 --format=csv --path="$WP_PATH" | sed 1d`

for SITE_URL in $SITE_URLS
do
  php "$(which wp)" cron event run  --due-now --url="$SITE_URL" --path="$WP_PATH" --quiet
done

Con este código básicamente hacemos 2 pasos.

El primero de ellos es sacar un listado de todos los sitios web que hay en el WordPress Multisite, pasándole la ruta donde está el wp-config.php.

Una vez tenemos la lista, vamos sitio a sitio y lanzamos los crones pendientes que haya para ese sitio.

Ahora podremos configurar este cron como:

*/5 * * * * bash /home/cron.sh >/dev/null 2>&1

Con este sistema podremos programar los crones y dará igual si se añaden o archivan sitios, ya que cada vez que se lanza la tarea sacará la lista de sitios disponibles que no hayan sido archivados o eliminados.


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.

Servicios de Administración de Sistemas WordPress

¿Tienes un sitio web con WordPress de alto tráfico? ¿Eres una Agencia con servidores con cPanel, Plesk u otro panel en los que mantienes WordPress para tus clientes?

Si es así y te interesa un servicio profesional de mantenimiento de infraestructura WordPress y de mejora del rendimiento de tus sitios web o los de tus clientes, contacta conmigo.

Deja un comentario