¿Cómo implementa WordPress cron?

Por defecto el gestor de contenidos WordPress necesita una forma de ejecutar ciertas tareas periódicamente como puede ser revisar por actualizaciones, actualizar cachés ,etc. Para este propósito este potente gestor de contenidos tiene un sistema propio de llevar esta lista de tareas y lanzarla periódicamente. Sin embargo la forma por defecto fue hecha para que WordPress pudiera funcionar en cualquier entorno de servidor sin necesidad de configuración, cosa que hace muy bien, pero no es necesariamente la más eficiente.

A este tipo de programas se les conoce como cron de la raíz griega de tiempo. En el caso de WordPress, es implementado por un script de php, que es llamado cada cierto tiempo.

Cambiando el cron del sistema:

Un pequeño truco para la optimización de las páginas den WordPress es ¿Cómo implementa WordPress el pseudocron? quitar el pseudocron que pose WordPress por defecto y que implementa en PHP para sustituirlo con el demonio cron del sistema operativo propio de los servidores Linux.

WordPress implementa este pseudocron como un pequeño script php que llama de ve en cuando logrando replicar de alguna manera el script de cron, sin embargo al ejecutarse en lenguaje de alto nivel php, y a nivel lenguaje de programación esto vuelve poco eficiente estas función.

Para sustituir esto es necesario entrar al archivo de configuración de wordpress en config.php y agregar el valor: . esto se puede hacer mediante un cliente ftp en el servidor de WordPress o directamente en la línea de comandos si se tiene acceso a esta en un editor de texto como nano o vi. Una vez agregada esta línea el pseucorn de WordPress estará desactivado por lo que procederemos a agregar el script de cron.

Para esto es necesario abrir el archivo de configuración de WordPress, wp-config.php para agregar la línea

define(‘DISABLE_WP_CRON’, ‘true’);

Esto se puede hacer con el editor de códidgo de Cpanel o por ssh. Una vez que se agregó la línea es necesario guardar el archivo.

Esto deshabilitará el pseudocraon de WordPress, por lo que es necesario posteriormente agregar la instrucción para que WordPress ejecute en el sistema operativo de vez en cuando las llamadas de cron. Esto se hace agregando un script usando la instrucción cronta -e si estamos en terminal, o dependiendo en que panel de control podemos encontrar una sección donde agregar este script.

Para hacerlo en Cyberpanel damos click en las opciones de nuestra website, y ahí hay una opción para configurar un trabajo cron. Lo ponemos a un tiempo razonable como puede ser media hora.

La instrucción que pondremos será la siguiente:

wget -q -O - http://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

la cual es un comando con wget que llama al archivo wp-cron.php cada cierto tiempo. Si tienen dudas de cual seria la expresión exacta en terminal pueden recurrir al sitio https://crontab.guru/ para crear un trabajo cron válido. Otra opción sobretodo si manejas varios trabajos cron de este tipo es hacer uso de un servicio de cron web de terceros, como puede ser https://www.easycron.com/. Esto sirve sobretodo si quieres mantener los crons de varios servidores en un solo lugar, pero yo prefiero usar directamente el cron de linux.

Limpiando trabajos cron.

Ahora bien una vez hecho esto queda la duda de si esto realmente esta funcionando o de cuales son los trabajos que ejecuta WordPress, para esto existe un plugin llamado wp control, el cual te permite ver los trabajos cron que están por ejecutarse. Además este te ayudará algún trabajo cron que se haya quedado de la desinstalación de algún plugin. Por ejemplo Jetpack al desinstalarlo también deja algunos trabajos cron que ya no sirven, si localizas estos trabajos puedes borrarlos con seguridad. Otra cosa es que este plugin desplegará una advertencia sobre que no tienes activado el cron de WordPress, lo cual se puede ignorar de manera segura ya que ya existe un trabajo cron en el servidor.