Scheduled actions en WooCommerce: La Guía Esencial

Cuando trabajas con WordPress y WooCommerce, tarde o temprano te encontrarás con la necesidad de ejecutar tareas en segundo plano. Ya sea para enviar un correo automático, procesar pagos recurrentes o limpiar datos antiguos, necesitas una solución eficiente para programar tareas. Y aunque muchos conocen WP_Cron, hoy te mostraremos por qué las Scheduled Actions son una mejor opción, especialmente en WooCommerce.

 

¿Qué son las Scheduled Actions?

Las Scheduled Actions (acciones programadas) son una forma más robusta y confiable de ejecutar tareas programadas en WordPress. A diferencia de WP_Cron, que depende de que alguien visite tu sitio para ejecutarse, las scheduled actions son gestionadas por Action Scheduler, una librería incluida en WooCommerce.

Este sistema guarda las tareas pendientes en la base de datos, las procesa en segundo plano y permite reintentos automáticos si algo falla. Además, ofrece una interfaz para ver, cancelar o reprogramar acciones desde el área de administración de WordPress.

Qué es WP_Cron en WordPress y cómo se usa?

¿Por qué usar Scheduled Actions en lugar de WP_Cron?

Caracterísica WP_Cron Scheduled Actions (Action Scheduler)
Fiabilidad Depende del tráfico del sitio Funciona con procesos separados o vía CLI
Persistencia No guarda resultados Almacena acciones y estados en la base
Gestión desde el panel No disponible Interfaz accesible desde WooCommerce
Reintentos automáticos No Sí, configurable
Escalabilidad Limitada Diseñado para sitios con muchas tareas

 

¿Cómo lo utiliza WooCommerce?

WooCommerce usa las scheduled actions para casi todo lo que ocurre en segundo plano, por ejemplo:

  • Envío de correos electrónicos automáticos.
  • Limpieza de sesiones expiradas del carrito.
  • Procesamiento de pagos y renovaciones de suscripciones.
  • Generación de reportes o sincronización con servicios externos.

Puedes ver las acciones programadas activas desde:  WooCommerce > Estado > Scheduled Actions

 

¿Cómo crear tus propias Scheduled Actions?

1. Programar una acción personalizada

<?php
if ( function_exists( 'as_schedule_single_action' ) ) {
    as_schedule_single_action(
        strtotime( '+10 minutes' ), // Hora de ejecución
        'enviar_correo_bienvenida', // Nombre del hook
        [ 'userId' => 123 ] // Parámetros opcionales
    );
}

 

2. Registrar el callback

<?php
add_action( 'enviar_correo_bienvenida', 'enviarCorreoBienvenidaCallback' );

function enviarCorreoBienvenidaCallback( $args ) {
    $userId   = $args['userId'];
    $userData = get_userdata( $userId );

    wp_mail(
        $userData->user_email,
        '¡Bienvenido!',
        'Gracias por unirte a nuestra plataforma.'
    );
}

 

3. Programar tareas recurrentes

<?php
if ( function_exists( 'as_schedule_recurring_action' ) ) {
    as_schedule_recurring_action(
        strtotime( 'tomorrow 00:00:00' ), // Primera ejecución
        DAY_IN_SECONDS, // Intervalo en segundos
        'limpiar_datos_temporales'
    );
}

 

Callback para esta acción:

<?php
add_action( 'limpiar_datos_temporales', 'limpiarDatosTemporalesCallback' );

function limpiarDatosTemporalesCallback() {
    global $wpdb;
    $wpdb->query( "DELETE FROM {$wpdb->prefix}temporal_data WHERE created_at < NOW() - INTERVAL 1 DAY" );
}

 

4. Cancelar o verificar una acción programada

<?php
$timestamp = as_next_scheduled_action( 'limpiar_datos_temporales' );

if ( $timestamp ) {
    as_unschedule_action( 'limpiar_datos_temporales' );
}

 

Recomendaciones

  • Usa as_schedule_single_action para tareas únicas, y as_schedule_recurring_action para tareas periódicas.
  • Verifica siempre que la función as_schedule_* exista antes de usarla.
  • Si utilizas WP-CLI, puedes ejecutar acciones manualmente con el comando: wp action-scheduler run

 

Las Scheduled Actions son una herramienta poderosa para programar tareas en WooCommerce de forma profesional. Son más confiables que WP_Cron, permiten reintentos automáticos, y están diseñadas para escalar en sitios con alta demanda. Si estás desarrollando funcionalidades que requieren ejecución en segundo plano, esta es la mejor forma de hacerlo.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x