Si un error de Programación perdida te aparece a menudo o tu hosting te ha dicho que consumes demasiados recursos, seguramente el Cron de WordPress te está jugando una mala pasada… Aprende como configurarlo correctamente y de paso, conoce el funcionamiento de tu web y tu servidor.
De forma simple, un Cron es básicamente un gestor de procesos que se ejecutan en segundo plano a intervalos regulares. Esta terminología, proviene de la administración de sistemas, y más concretamente de la gestión de tareas en servidores Linux. Como verás más adelante, hoy vamos a utilizar el Cron de tu hosting para sustituir al Cron de WordPress.
El Cron de WordPress es una adaptación particular del Cron de tu servidor. A través del archivo wp-cron.php que encontrarás en la raíz de tu instalación, WordPress ejecuta una serie de procesos en segundo plano. Éstos pueden ser:
- El envío de trackbacks y pingbacks
- Consultas a WordPress.org para:
- la actualización del core de WordPress
- la actualización de los plugins
- la actualización del theme
- Limpieza de la papelera de reciclaje
- La publicación automática de entradas programadas
- Otras tareas que puedan requerir acciones basadas en la gestión del tiempo de otros plugins, como por ejemplo, copias de seguridad o la publicación automática en redes sociales.
¿Cómo saber si el Cron de WordPress funciona correctamente?
En líneas generales, lo que más rápido vas a detectar es cuando el Cron de WordPress no funciona correctamente. Si programas tus publicaciones y te has encontrado con el famoso error de programación perdida, la publicación en tus redes sociales no se ha producido o la copia de seguridad de tu plugin no se ha ejecutado a la hora programada, son indicios de que algo no funciona bien en tu Cron de WordPress.
Este fallo de no ejecución se produce en la mayoría de los casos en aquellas instalaciones que tienen poco tráfico todavía. Ya que el Cron de WordPress se ejecuta cada vez que un usuario visita tu web. Por lo tanto, si habías programado tu entrada para las ocho de la mañana y no ha entrado nadie en toda la noche, lo más probable es que te encuentres el error de programación perdida.
Del mismo modo, el Cron de WordPress puede consumir una gran cantidad de recursos en aquellas instalaciones que reciben un alto volumen de tráfico diario. Si tu web recibe una media de mil visitas al día, y cada usuario visualiza una media de cinco páginas, el Cron de tu WordPress se estará ejecutando unas 5.000 veces al día. No hace falta hacer tantas comprobaciones al día sobre si tu WordPress o tus plugins están actualizados.
De hecho, si alguna vez has detectado un lag en tu Escritorio de WordPress cuando está cargando una ventana, es señal de que el Cron de tu WordPress se está ejecutando en ese preciso momento.
¿Cómo desactivar el Cron de WordPress?
Si quieres solucionar el problema de la programación perdida, porque todavía recibes pocas visitas, vamos a ver como solucionarlo de forma fácil y rápida.
Para ello, lo primero que debes hacer es desactivar el Cron de tu instalación de WordPress. Solo tienes que añadir la siguiente línea de código en tu archivo wp-config.php:
define('DISABLE_WP_CRON', true);
Una vez hayas guardado los cambios en tu archivo wp-config.php, habrás deshabilitado la ejecución del Cron de tu instalación de WordPress. El siguiente paso es activar ahora una tarea de Cron en tu servidor de hosting, para que sea éste quién ejecute ahora el Cron de tu WordPress.
¿Cómo activar una tarea de Cron en tu panel de hosting?
Si el tu hosting tiene un panel cPanel, para activar una tarea de Cron que sustituya al Cron de WordPress que acabamos de anular a través del archivo wp-config.php solo tienes que dirigirte al apartado Avanzada, y hacer click en la opción "trabajos de cron".
Una vez en la pantalla de Trabajos de Cron, dirígete a la sección Añadir nuevo trabajo de cron, haz click en el desplegable de –Configuración común– y selecciona una de las siguientes opciones:
- Una vez por minuto ( * * * * * )
- Una vez cada 5 minutos ( */5 * * * * )
- Una vez cada 30 minutos ( 0,30 * * * * )
- Una vez por hora ( 0 * * * * )
- Dos veces al día ( 0 0,12 * * * )
- Una vez al día ( 0 0 * * * )
- Una vez por semana ( 0 0 * * 0 )
- El 1 y el 15 del mes ( 0 0 1,15 * * )
- Una vez al mes ( 0 0 1 * * )
- Una vez por año ( 0 0 1 1 * )
Como ves, tienes bastantes opciones para configurar una tarea de Cron. ¿Cuál elegir? Pues como siempre, depende. No es lo mismo una web que todavía tiene poco tráfico, que una web que recibe varios miles de visitas al día. Como hemos visto, las consecuencias son distintas para cada uno de estos casos.
Por lo tanto, nuestra recomendación es que si tu web recibe todavía pocas visitas, establezcas una frecuencia alta, por ejemplo Una vez cada 5 minutos ( */5 * * * * ) De este modo, acabarás con el error de programación perdida y todos los automatismos de tu web funcionarán correctamente.
Pero por otra parte, si tu web recibe un volumen de tráfico alto, puedes reducir la frecuencia de tu tarea de cron, por ejemplo Una vez cada 30 minutos ( 0,30 * * * * ) o Una vez por hora ( 0 * * * * ) es más que suficiente para mantener tu web actualizada y libre de sobrecarga en los recursos del servidor.
Una vez que hayas escogido una de las opciones del desplegable de –Configuración común–, verás que el resto de campos se rellenan automáticamente salvo el campo Comando. En este campo debes incluir el siguiente código, sustituyendo tudominio.com por el dominio de tu proyecto.
wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Por último, haz click sobre el botón Añadir nuevo trabajo de cron para terminar la configuración.
Algunas consideraciones para terminar
Debes tener en cuenta que, al igual que no hay dos sitios web iguales, no todos los servidores son iguales. Tienen arquitecturas diferentes y es posible que este código no funcione en tu alojamiento web. Si esto sucede, deberás cambiar el Comando a ejecutar por uno de los siguientes:
Primera opción (sustituye user por tu nombre de usuario)
/usr/local/bien/php /home/user/public_html/wp-cron.php
Segunda opción (sustituye https://tudominio.com por tu dominio)
wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Tercera opción (sustituye /directorioraiz/nombreusuario/ por la ruta y tu nombre de usuario en tu proveedor de hosting)
php -q /directorioraiz/nombreusuario/public_html/wp-cron.php
Es habitual encontrar en el panel de Tareas Cron de tu alojamiento web alguna indicación sobre cómo debes implementar el comando.
Del mismo modo, si ninguno de los comandos anteriores no funciona, o no encuentras ninguna indicación al respecto en el panel de Tareas Cron de tu servidor, deberás ponerte en contacto con el departamento de soporte de tu hosting. Indicando que quieres activar el comando para ejecutar el archivo wp-cron.php y puedan decirte el código a implementar.