Qué es WordPress Cron

¿Te has preguntado alguna vez cómo tu sitio WordPress se mantiene funcionando sin problemas con tareas como la comprobación de actualizaciones o la publicación de entradas programadas?
Aquí es donde entra en juego WordPress Cron. WordPress Cron (WP-Cron) es un sistema que gestiona la programación de tareas basadas en el tiempo en tu sitio web, asegurándose de que todo sucede sin problemas y sin intervención manual.
En los sistemas tradicionales, los cron jobs se utilizan para programar tareas a horas concretas.
WordPress Cron funciona de forma un poco diferente; utiliza intervalos para simular estas tareas programadas.
Cada vez que alguien visita tu sitio, WordPress comprueba si es necesario ejecutar alguna tarea programada.
Este enfoque ayuda a mantener tu sitio actualizado y eficiente.
Entender cómo gestionar las tareas Cron de WordPress puede ser crucial para el rendimiento del sitio.
Sabiendo dónde mirar y qué ajustar, puedes tomar el control total de las tareas programadas en tu sitio de WordPress, optimizándolo aún más para tus necesidades.
Tanto si publicas entradas en momentos estratégicos como si realizas tareas de mantenimiento periódicas, dominar WordPress Cron puede desbloquearte nuevos niveles de gestión del sitio.

Comprender WordPress Cron

WordPress Cron es una parte vital de cómo WordPress programa y automatiza tareas.
Esta sección explicará qué es WordPress Cron, lo comparará con Unix Cron y detallará cómo funciona.

¿Qué es WordPress Cron?

WordPress Cron, también conocido como WP-Cron, es una función integrada en WordPress que gestiona tareas basadas en el tiempo. Estas tareas incluyen la comprobación de actualizaciones, la publicación de entradas programadas y mucho más.
A diferencia de las tareas cron tradicionales que se ejecutan en el servidor, WordPress Cron se basa en el tráfico del sitio para activar la ejecución de estas tareas.
Cuando alguien visita tu sitio de WordPress, se llama a wp-cron.php y WordPress comprueba si hay alguna tarea programada que deba ejecutarse.
Esto puede ser menos fiable si tu sitio no recibe mucho tráfico.

WordPress Cron vs. Unix cron

Unix cron es un programador de tareas basado en el tiempo de los sistemas operativos tipo Unix.
Programa tareas para que se ejecuten a horas o intervalos específicos utilizando el reloj del sistema. Los Cron jobs se muestran en el terminal. En cambio, WordPress Cron depende de las visitas al sitio web para ejecutar las tareas programadas, ya que no utiliza el reloj del sistema.
Mientras que Unix cron se ejecuta independientemente de las visitas de los usuarios, WordPress Cron sólo se ejecuta cuando alguien visita el sitio web.
Como resultado, WordPress Cron puede omitir tareas en sitios con poco tráfico, mientras que Unix cron garantiza que las tareas se ejecuten a tiempo, independientemente del tráfico del sitio.

Cómo funciona WordPress Cron

WordPress Cron funciona programando tareas que se almacenan en la base de datos de WordPress.
Estas tareas tienen intervalos especificados, como cada hora o dos veces al día.
Cuando un usuario visita tu sitio, wp-cron.php comprueba si hay tareas pendientes y las ejecuta.
Puedes configurar intervalos y tareas personalizados utilizando ganchos y filtros.
Por ejemplo, puedes establecer tareas para optimizar tu base de datos o enviar notificaciones por correo electrónico.
Si tu sitio tiene poco tráfico o necesitas un control más preciso, puedes considerar el uso de un cron job real en tu servidor para llamar a wp-cron.php a intervalos regulares, asegurando que las tareas se ejecuten de forma fiable.

Configurar y gestionar las tareas Cron de WordPress

Configurar y gestionar tareas cron en WordPress te permite automatizar tareas como copias de seguridad, actualizaciones y mucho más.
Esta sección te guiará en el uso de las funciones WP-Cron, los plugins, la creación de intervalos personalizados y la edición o eliminación de tareas cron.

Utilizar las funciones WP-Cron

WP-Cron es el sistema cron propio de WordPress, que te permite configurar tareas programadas.
Puedes gestionar estas tareas utilizando funciones como wp_schedule_event.
Esta función te permite especificar la hora de ejecución de las tareas.
La función add_action engancha tus tareas personalizadas a WP-Cron.
Por ejemplo:

add_action('my_daily_event', 'my_daily_function');

También tienes que definir la función:

function my_daily_function() {
    // Your code here
}

De esta forma, tu tarea se añade a la programación y se ejecuta en consecuencia.

Gestionar WordPress Cron con plugins

Gestionar las tareas cron puede ser más fácil con plugins como WP Crontrol.
En primer lugar, instala y activa el plugin WP Crontrol desde el panel de control de WordPress.

  1. Ve a Plugins → Añadir nuevo
  2. Buscar «WP Crontrol»
  3. Haz clic en Instalar ahora y luego en Activar Instalar un plugin Cron de WordPress en el admin.

Después de activarla, ve a Herramientas → Eventos Cron.
Aquí verás una lista de todas las tareas cron programadas. WP Crontrol muestra la lista de tareas cron de WordPress. Estos plugins proporcionan una interfaz para añadir, editar y gestionar tus tareas cron sin tocar código.

Crear intervalos personalizados

A veces los intervalos predeterminados, como cada hora, dos veces al día o cada día, no se ajustan a tus necesidades.
Puedes añadir intervalos de tiempo personalizados añadiendo código a tu archivo functions.php.
Utiliza el filtro cron_schedules para añadir nuevos intervalos.
Por ejemplo

function example_add_cron_interval($schedules) {
    $schedules['every_five_minutes'] = array(
        'interval' => 300, 
        'display' => __('Every 5 Minutes')
    );
    return $schedules;
}
add_filter('cron_schedules', 'example_add_cron_interval');

Después, utiliza wp_schedule_event para programar tareas utilizando tu intervalo personalizado.

Editar y eliminar tareas cron

Editar o eliminar tareas cron es sencillo con plugins como WP Crontrol.
Para editar una tarea cron:

  1. Ve a Herramientas → Eventos Cron
  2. Localiza la tarea que quieres editar
  3. Haz clic en Editar

Puedes cambiar el gancho, el horario o los argumentos.
Para eliminar una tarea cron:

  1. Todavía en Herramientas → Eventos Cron
  2. Encuentra la tarea
  3. Haz clic en Eliminar

Esto elimina la tarea de la programación.

Optimizar el rendimiento de WordPress Cron

Optimizar las tareas cron en WordPress puede mejorar significativamente el rendimiento de tu sitio y la eficiencia del servidor.
Esto implica controlar la ejecución de cron, implementar cron a nivel de servidor y solucionar problemas comunes.

Controlar la ejecución de cron

Por defecto, WordPress activa tareas cron en función de las visitas al sitio, lo que puede dar lugar a un rendimiento impredecible.
Una forma de optimizarlo es ajustar cuándo y con qué frecuencia se ejecutan estas tareas.
Para empezar, puedes configurar WordPress para que utilice un cron real en lugar del pseudo-cron por defecto.
Esto implica desactivar WP-Cron y configurar un cron de sistema en tu servidor.
Estos son los pasos:

  1. Edita tu archivo wp-config.php para añadir define('DISABLE_WP_CRON', true);.
  2. Añade una tarea cron del sistema utilizando cPanel, Crontab o herramientas similares.

Esto garantiza un mejor control sobre el momento y la frecuencia de tus tareas programadas, ayudando a evitar una alta carga del servidor.

Implementación de cron a nivel de servidor

Implementar cron a nivel de servidor (o System Cron) puede mejorar la fiabilidad y el rendimiento al gestionar las tareas cron fuera de tu entorno WordPress.
En un entorno de alojamiento compartido, esto puede ser un poco complicado debido al acceso limitado, pero en un plan de alojamiento dedicado o gestionado de WordPress, tienes más control.
Aquí tienes una guía rápida:

  1. Accede al crontab de tu servidor escribiendo crontab -e en tu terminal. Introduciendo crontab -e en un terminal.
  2. Añade una línea para programar tu tarea cron, por ejemplo: */15 * * * * wget -q -O - https://yourwebsite.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1.

Esta configuración ejecuta WP-Cron cada 15 minutos, reduciendo los tiempos de carga al garantizar que las tareas se reparten y no se ejecutan todas al cargar la página.

Solución de problemas comunes

Al configurar y optimizar las tareas cron, es posible que te encuentres con problemas como tareas cron que no se inician, conflictos con WP-Cron o cargas elevadas del servidor.
Para solucionar el problema, comprueba si hay errores de sintaxis en tu wp-config.php y verifica si tu proveedor de alojamiento es compatible con cron.
Además, plugins como WP Crontrol pueden ayudar:

  1. Navega hasta Plugins -> Añadir nuevo
  2. Instala y activa WP Crontrol
  3. Utilízalo para supervisar y gestionar tus cron jobs, asegurándote de que se ejecutan según lo previsto.

Si te encuentras con problemas de alta carga en el servidor, asegúrate de que la frecuencia de tus tareas cron está configurada adecuadamente, y evita ejecutar demasiadas tareas pesadas simultáneamente.

Técnicas avanzadas para WordPress Cron

Dominar las técnicas avanzadas de cron puede ayudarte a llevar tu sitio WordPress al siguiente nivel.
Aprenderás a manejar herramientas de línea de comandos para agilizar tareas y automatizar la programación de trabajos para que tu sitio funcione sin problemas.

Trabajar con WP-CLI

WP-CLI es una potente herramienta que te permite gestionar tu sitio WordPress desde la línea de comandos.
Para utilizar WP-CLI para las tareas cron, necesitarás acceder a tu servidor mediante SSH.
Una vez conectado, puedes listar todos los eventos cron programados utilizando el comando

wp cron event list

Este comando mostrará una tabla con columnas para Nombre del gancho, Próxima ejecución (UTC) y Programación.
También puedes ejecutar manualmente un evento cron específico con:

wp cron event run <hook-name>

Donde <hook-name> es el nombre del gancho que quieres ejecutar.
Configurar WP-CLI en tu archivo wp-config.php te permite automatizar scripts para WooCommerce y otros plugins.
Esto puede agilizar tu flujo de trabajo y reducir la intervención manual.

Automatización y programación basada en ganchos

La automatización es clave para gestionar el tiempo con eficacia.
Puedes dividir tus tareas utilizando ganchos en WordPress.
Estos ganchos te permiten crear tareas programadas que se ejecutan a intervalos específicos.
Añade tus funciones personalizadas a estos ganchos para realizar acciones como limpiar la base de datos o enviar correos electrónicos periódicos.
Por ejemplo, para programar un correo electrónico diario, puedes añadir un gancho personalizado en el archivo functions.php de tu tema:

if ( ! wp_next_scheduled( 'send_daily_email' ) ) {
  wp_schedule_event( time(), 'daily', 'send_daily_email' );
}

add_action( 'send_daily_email', 'send_daily_email_function' );

function send_daily_email_function() {
  // Your email sending script here
}

Este código configura un nuevo evento cron send_daily_email que activa el send_daily_email_function cada día.
También puedes utilizar el plugin WP Crontrol o Advanced Cron Manager para visualizar y gestionar estos eventos cron desde tu panel de control.
En conclusión, entender qué es WordPress Cron y cómo funciona puede mejorar significativamente el rendimiento y la capacidad de gestión de tu sitio.
Si dominas WP-Cron, podrás programar eficazmente tareas como actualizaciones, copias de seguridad y publicación de entradas, garantizando que tu sitio WordPress funcione sin problemas y de forma fiable.
Con las herramientas y técnicas adecuadas, puedes optimizar y personalizar las tareas cron para adaptarlas a tus necesidades específicas, lo que mejorará el rendimiento del sitio y la experiencia del usuario.