Los CRON jobs son usados para agendar tiempos de arreglos periódicos, fechas o intervalos en su sitio de WordPress. Algunos ejemplos de un cron job de WordPress podría involucrar agendar un artículo para ser publicado, checar actualizaciones, o un plugin de repuesto trabajando en un horario predefinido.

En WordPress, esto es controlado por el WP-Cron, el cual es usado para simular un sistema cron. Sin embargo, dependiendo de la cantidad de tráfico de su sitio, utilizando el controlador de cron, puede en realidad empezar a impactar los tiempos de carga de sus páginas. Así que el día de hoy, les mostraremos cómo deshabilitar el WP-Cron (wp-cron.php) y en lugar utilizar un sistema cron para un mejor desempeño.

Problemas de Desempeño con WP-Cron

Nosotros lidiamos con sitios de alto tráfico y demanda. Por eso, hemos visto muchos problemas de desempeño con el controlador de Cron de WordPress: WP-Cron. Antes que nada, es importante entender que el WP-Cron no es un cron job verdadero, es simplemente lo que WordPress ha creado para imitar lo que hace un sistema cron.

WP-Cron no trabaja continuamente. Por defecto, el wp-cron.php se activa cada vez que se carga una página, lo cual en sitios de alto tráfico llega a causar problemas. Si un sitio no tiene suficientes PHP workers, en algunas ocasiones una petición generará  el cron, pero el cron tendrá que esperar por el worker, y por lo tanto se quedará sin hacer nada.

También puede ocurrir lo contrario. Si un sitio no tiene mucho tráfico, se pueden perder las agendas debido al hecho de que nadie ha cargado la página.

Un mejor enfoque es deshabilitando el WP-Cron y utilizar el sistema cron en su lugar. Esto funciona en una agenda predefinida e incluso es recomendado por la guía oficial del Plugin.

¿Cómo Deshabilitar WP-Cron?

Para deshabilitar el WP-Cron, agregue lo siguiente a su archivo de wp-config.php, justo antes de la línea que dice “That’s all, stop editing! Happy blogging.” Nota: Esto lo deshabilita de correr en cada carga de página, no cuando uno llama directamente a través de wp-cron.php.

define('DISABLE_WP_CRON', true);
Deshabilitar WP-Cron
Deshabilitar WP-Cron

¿Cómo Agendar un Sistema Cron?

A continuación, tendrás que programar wp-cron.php desde tu servidor.

Si tu sitio es un multisitio, hay algunos pasos adicionales de configuración que deberás seguir para que las tareas cron se ejecuten en tus subsitios. Aquí hay un par de recursos que podemos recomendar para ello:

Para WordPress de un solo sitio, la gran noticia es que si eres cliente de Kinsta, nuestro cron del lado del servidor activa wp-cron.php cada 15 minutos por defecto. 💪Esto ejecutará cualquier cron programado de WordPress. Y si lo necesitas, puedes aumentar la frecuencia poniéndote en contacto con nuestro equipo de soporte.

Si estás familiarizado con SSH, también puedes seguir nuestro tutorial sobre cómo gestionar los crons del servidor desde la línea de comandos en Kinsta. Todos nuestros planes de alojamiento incluyen acceso SSH.

Si no eres cliente de Kinsta, te recomendamos que veas Cómo configurar correctamente los Cron Jobs de WordPress para aprender a configurar los crons del sistema.

Crear Cron Job en cPanel

Si usted está utilizando un host con cPanel, también puede crear un sistema cron desde su panel de control. Nota: Asegúrese de deshabilitar el WP-Cron base primero.

Paso 1

Inicie sesión en cPanel. En la sección de Avanzado, de clic en Cron Jobs.

Cron jobs en cPanel
Cron jobs en cPanel

Paso 2

Debajo de la sección de Agregar nuevo Cron Job, usted puede elegir el número de distintos horarios predefinidos, como dos veces por hora o una vez por semana. Su proveedor de hosting probablemente tenga un límite sobre qué tan seguido pueden utilizar cron jobs. Hasta dos veces por hora es una configuración común para los hosts compartidos.

Opciones de cPanel cron job
Opciones de cPanel cron job

Paso 3

Agregue el siguiente comando. Reemplace https://domain.com con el nombre de su dominio. Este comando puede variar un poco basado en cómo su hosting está configurado. Luego de clic en “Agregar un Nuevo Cron Job.”

wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
cPanel agregar cron job nuevo
cPanel agregar cron job nuevo

La parte >/dev/null 2>&1 del comando de arriba deshabilita las notificaciones de email.

Agendando Crons con Soluciones Externas

Si usted no está cómodo tratando de configurar cron jobs en su servidor o su proveedor de hosting no provee acceso, también puede utilizar una solución como EasyCron.