WP-Cron – Todo lo que querías saber sobre el cron de WordPress y su importancia en la optimización web

Una de las funcionalidades menos conocidas de WordPress que afecta de manera importante a la optimización de recursos de tu web es el cron de WordPress: WP-Cron.

Si eres aficionado – como yo – a optimizar WordPress para pagar menos hosting, te animo a conocer qué es WP-Cron, cómo funciona, por qué es importante y cómo controlarlo y hasta desactivarlo.

Qué es un cron

Cron es un comando UNIX con el que programar trabajos que se ejecutarán en el futuro.

Un cron se usa normalmente para programar un trabajo que se ejecuta periódicamente. Por ejemplo, puedes utilizar una función de cron para enviar un aviso cada mañana. También es un proceso demonio, lo que significa que se ejecuta continuamente, esperando a que ocurran eventos específicos.

Cómo funciona el WP-Cron de WordPress

Como WordPress se instala con multitud de distintas configuraciones, para que todo funcione correctamente los desarrolladores de WordPress incluyeron un pseudo cron que incluye las funciones de WP-Cron functions, que ayudan a ejecutar trabajos programados como:

  • Buscar actualizaciones de temas y plugins
  • Publicar entradas programadas
  • Enviar pingbacks
  • … muchas más cosas.

Al contrario que los trabajos cron reales, que se ejecutan a una hora específica basada en los ajustes del servidor, la función WP-Cron se ejecuta cada vez que alguien visita un sitio creado con WordPress.

Con esto se consigue que casi cualquier sitio WordPress se ejecute correctamente en distintas configuraciones de servidores, ya que elimina montones de requisitos específicos de los servidores.

En cada carga de página, WordPress comprueba si hace falta ejecutar un WP-Cron, y si así fuera, hace una petición por HTTP al archivo wp-cron.php.

El motivo de esta llamada al archivo wp-cron.php es porque algunos trabajos llevan más tiempo y no se puede hacer esperar al usuario que quiere ver la página del sitio WordPress. Lógico ¿no?

Al hacer la llamada a wp-cron.php se ayuda a mantener en funcionamiento la función WP-Cron como un proceso separado de fondo, sin generar retrasos en los tiempos de carga de las páginas para los visitantes.

Una vez se inicia la función WP-Cron, sigue ejecutándose hasta que se completen todos los trabajos requeridos, o hasta que alcance un tiempo de ejecución definido en la configuración del servidor.

Dependiendo de la configuración de tu servidor, puede que WP-Cron no termine de completar sus trabajos, o que incluso ni siquiera funcione.

Luego está el hecho de que en los sitios con mucho tráfico el que haya múltiples procesos de WP-cron ejecutándose en cada acción generen problemas de rendimiento, e incluso caídas de la web.

Hay gente (sí, la hay) que critica por esto a WordPress, pero no es en sí un problema de WordPress, pues cada instalación es diferente y, conociéndola, podemos personalizar nuestro WordPress para se ejecute del modo más óptimo posible.

Problemas con el cron

Ahora que ya conocemos los principios básicos del cron de WordPress vamos a ver posibles problemas, y más adelante soluciones.

Múltiples procesos de WP-Cron en sitios con mucho tráfico

Si eres administrador de un servidor o gestionas tu propio servidor con un cortafuegos, es posible que hayas recibido correos electrónicos de tu cortafuegos sobre que hay un archivo wp-cron.php ejecutándose durante un largo período de tiempo.

Esto ocurre cuando el tiempo de ejecución del script configurado en tu servidor es superior a 60 segundos. Como el proceso no se termina, y se inician nuevos procesos, se ejecutan múltiples instancias del proceso WP-Cron en el servidor.

Esto no sucede en webs con poco tráfico, pero si tu web WordPress tiene usuarios simultáneos en un momento dado y el tiempo máximo de ejecución del script está configurado con valores altos, entonces habrá muchas instancias de la función WP-Cron ejecutándose.

Hasta la versión 3.3 de WordPress, siempre había un problema de múltiples procesos cron que se ejecutaban en bucle sobre los mismos eventos.

Entradas programadas que no se  publican

Otro problema muy conocido, y que los proveedores de hosting especializados en WordPress conocen bien, es que en algunas web con muy poco tráfico las publicaciones programadas no se publican.

Como la función WP-Cron sólo se ejecuta cuando hay una solicitud de página, si no hay solicitudes entonces los trabajos programados no se ejecutan.

Esto antiguamente también pasaba por otros motivos, pero hace bastantes versiones de WordPress que se ha convertido en un problema relativamente residual. Que pasa poco vaya.

WP-Cron no se ejecuta

De nuevo, esto es un problema con la configuración del servidor.

Debido a una configuración incorrecta, el cortafuegos bloquea los scripts que impiden que se llamen a sí mismos, por lo que la función WP-Cron no funciona.

Cómo solucionar la mayoría de los problemas con WP-Cron

Para evitar múltiples instancias de WP-Cron ejecutándose en tu servidor para una sola web, vamos a ver la forma habitual de configurar trabajos cron en un servidor Linux (Apache). La ventaja de este método es:

  • Más control sobre cómo se ejecuta la función WP-Cron.
  • Permitir múltiples loops.
  • Si tienes un servidor con un montón de webs WordPress esto puede reducir la carga del servidor.

Antes de meterte en esto, asegúrate de que tu servidor te permite configurar trabajos cron de Linux.

Su configuración será diferente según el panel de control que ofrezca tu hosting, pero en esta guía veremos con configurar un trabajo cron usando el panel de control cPanel, muy habitual en servidores Linux hoy en día, y en el panel de herramientas de SiteGround, uno de los proveedores de hosting más utilizados por los usuarios de WordPress

Los pasos a seguir son:

  1. Desactivar la función WP-Cron interna de WordPress que se ejecuta en cada carga de página.
  2. Configurar una función cron real que haga una solicitud
    get

    al archivo wp-cron.php a intervalos regulares basados en tus preferencias y/o necesidades.

Sí, así de sencillo, solo dos pasos para hacer que todo funcione mejor, más fluido y rápido.

NOTA IMPORTANTE: Antes de seguir ten en cuenta que desactivar el WP-Cron también puede resultar en que algo en la web deje de funcionar, dependiendo de tu configuración o de los plugins que uses.

Desactivar la función WP-Cron

Abre el archivo wp-config.php en tu editor o IDE favorito y añade la siguiente línea (justo antes de la que dice «Deja de editar… »):

/* Desactivar Wp-Cron */
define('DISABLE_WP_CRON', true);

Esta constante hará que la función WP-Cron de WordPress deje de ejecutarse y no llame al archivo wp-cron.php.

Configurar una función cron real en tu servidor

Si tienes acceso en tu hosting a alguna herramienta para configurar trabajos cron tienes que configurar un trabajo cron nuevo como el siguiente:

wget -q -O - https://tudominio.es/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Nota: Antes de usar este comando recuerda cambiar el dominio de ejemplo por el tuyo.

Cómo crear y configurar un trabajo cron real

El proceso visto en el punto anterior, varía dependiendo de tu alojamiento, de tu empresa de hosting, así que vamos a ver dos de los casos más comunes.

Crear un trabajo cron real con cPanel

Si tu empresa de hosting utiliza cPanel primero localiza la herramienta de trabajos cron.

Una vez accedas a la herramienta configura un nuevo trabajo cron a partir de las configuraciones comunes que verás en el desplegable.

En este brevísimo vídeo se ve lo fácil que es…

En el vídeo anterior he seleccionado la de «Una vez cada 5 minutos», y como habrás visto se rellenan automáticamente todos los campos necesarios menos el del comando.

El comando es el que vimos antes, este:

wget -q -O - https://tudominio.es/wp-cron.php?doing_wp_cron >/dev/null 2>&1

Cuando añadas el nuevo trabajo cron, y si has desactivado la función WP-Cron previamente como hemos visto, en este ejemplo, el servidor hará una solicitud al archivo wp-cron.php cada 5 minutos, en vez de en cada visita a cualquier página de tu web.

Crear un trabajo cron real en SiteGround

Si tienes tus sitios WordPress alojados en SiteGround tienes un panel diferente, pero es igual de fácil crear trabajos cron reales.

Desde las Site Tools simplemente ve a la sección de desarrolladores y ahí encontrarás dónde crear trabajos cron.

Como ves en este corto vídeo es igual o más fácil que en cPanel…

Por supuesto, da igual la herramienta que uses, puedes cambiar los ajustes de programación a otras opciones si lo prefieres y compruebes que es más óptimo para tu web; cada minuto, cada media hora, lo que veas.

Cómo controla los trabajos cron de WP-Cron

Una decisión diferente a la anterior, para evitar los problemas de WP-Cron, sería controlar, añadir, borrar y personalizar los trabajos cron de WP-Cron.

Para eso mi consejo es que te ayudes del maravilloso plugin WP-Crontroluno de mis plugins esenciales de siempre.

Una vez activo te ofrece una completísima interfaz desde la que puedes ver los procesos de WP-Cron programados y realizar acciones sobre ellos, como ejecutarlos, editarlos e incluso borrarlos.

También verás que hay trabajos cron huérfanos, dejados por plugins alguna vez activos, que en este caso puedes borrar sin piedad, para evitar procesos innecesarios.

Si decides editar un trabajo cron la interfaz es muy sencilla.

También tienes una pantalla en la que crear nuevas programaciones cron personalizadas, para luego aplicarlas rápidamente a los trabajos cron.

Además, puedes añadir nuevos trabajos cron con la programación que quieras, por defecto o creada por ti previamente.

Y, por último, también puedes añadir trabajos cron mediante PHP, con tus propios ganchos de WordPress por ejemplo, desde una sencilla interfaz.

Como puedes comprobar, muy potente, realmente completo, y muy interesante para todo aquél que quiera tener crontrolado WP-Cron.


Bueno, espero que esta guía sobre WP-Cron te haya ayudado a conocer y comprender esta funcionalidad de WordPress tan importante, sus implicaciones de cara al WPO y cómo controlarla y desactivarla, si quieres.

Si te quedan dudas déjalas en la sección de comentarios y trataremos de resolverlas.

La entrada WP-Cron – Todo lo que querías saber sobre el cron de WordPress y su importancia en la optimización web la publicó primero Fernando Tellado en Ayuda WordPress. No copies contenido, no dice nada bueno de ti a tus lectores.

Laura D´Cuero
0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *