woocs_sheduler_rates_updated
woocs_sheduler_rates_updated (desde v.2.4.5/1.4.5) se activa después de que el proceso de actualización automática de las tasas de cambio se completa. Este hook se desencadena por el trabajo cron de WordPress cuando las tasas de cambio se actualizan desde fuentes externas.¿Cuándo se activa?
Este hook se ejecuta al final del método rate_auto_update(), después de:
- Se obtienen nuevas tasas desde la API de tasas de cambio
- Los datos de la moneda se validan y actualizan
- Los cambios se guardan en la base de datos
- Se envía una notificación por correo electrónico opcional al administrador
Casos de uso
1. Sistemas de notificación personalizados
Enviar actualizaciones a Slack, Telegram u otras plataformas de mensajería:
add_action('woocs_sheduler_rates_updated', function($currencies) {
$message = "💱 Currency rates updated:\n";
foreach ($currencies as $code => $curr) {
if ($curr['is_etalon'] == 1) continue;
$message .= "{$code}: {$curr['rate']}\n";
}
// Send to Telegram
wp_remote_post('https://api.telegram.org/bot' . YOUR_BOT_TOKEN . '/sendMessage', [
'body' => [
'chat_id' => YOUR_CHAT_ID,
'text' => $message
]
]);
});
2. Monitoreo de cambios en las tasas
Alertar si las tasas cambian drásticamente:
add_action('woocs_sheduler_rates_updated', function($currencies) {
$old_rates = get_option('woocs_previous_rates', []);
foreach ($currencies as $code => $curr) {
if (isset($old_rates[$code])) {
$change = abs(($curr['rate'] - $old_rates[$code]) / $old_rates[$code] * 100);
if ($change > 5) { // More than 5% change
error_log("⚠️ ALERT: {$code} rate changed by {$change}%");
// Send urgent notification
}
}
}
// Save current rates for next comparison
$rates_only = array_column($currencies, 'rate', 'name');
update_option('woocs_previous_rates', $rates_only);
});
3. Sincronización con sistemas externos
Actualizar las tasas en tu ERP, software de contabilidad u otras plataformas:
add_action('woocs_sheduler_rates_updated', function($currencies) {
// Sync to external API
wp_remote_post('https://your-erp.com/api/rates', [
'body' => json_encode($currencies),
'headers' => ['Content-Type' => 'application/json']
]);
});
4. Recalculo de precios personalizado
Desencadenar actualizaciones adicionales para campos meta personalizados o datos relacionados:
add_action('woocs_sheduler_rates_updated', function($currencies) {
// Update custom price fields
$products = wc_get_products(['limit' => -1]);
foreach ($products as $product) {
// Your custom recalculation logic
$custom_price = get_post_meta($product->get_id(), '_custom_currency_price', true);
if ($custom_price) {
// Recalculate based on new rates
update_post_meta($product->get_id(), '_cached_converted_price',
$custom_price * $currencies['EUR']['rate']);
}
}
});
5. Registro y análisis
Rastrear el historial de tasas para análisis:
add_action('woocs_sheduler_rates_updated', function($currencies) {
global $wpdb;
foreach ($currencies as $code => $curr) {
if ($curr['is_etalon'] == 1) continue;
$wpdb->insert('wp_currency_rate_history', [
'currency_code' => $code,
'rate' => $curr['rate'],
'updated_at' => current_time('mysql')
]);
}
});
Prioridad y sincronización
Añade prioridad si el orden de ejecución importa:
add_action('woocs_sheduler_rates_updated', 'my_function', 10, 1); // Default priority
add_action('woocs_sheduler_rates_updated', 'my_urgent_function', 5, 1); // Runs first
Notas
- Este hook solo se activa durante actualizaciones automáticas de cron, no durante actualizaciones manuales de tasas desde el panel de administración
- El array
$currenciescontiene los datos completos actualizados ya guardados en la base de datos - El hook se ejecuta después de la notificación opcional por correo al administrador
Este hook proporciona potentes capacidades de integración para extender la funcionalidad de WOOCS con lógica empresarial personalizada, monitoreo y sincronización con sistemas de terceros.