FOX - Currency Switcher for WooCommerce

woocs_sheduler_rates_updated

El hook de acción 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 $currencies contiene 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.