
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.
¿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, yas_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.