FOX - Currency Switcher for WooCommerce

WooCommerce Product Add-Ons (by WooCommerce)

URL du plugin : https://woocommerce.com/products/product-add-ons/
  • Dans le fichier wp-content\plugins\woocommerce-product-addons\includes\class-wc-product-addons-cart.php, ajoutez le code suivant :
    if ($addon['price'] AND class_exists('WOOCS')) {
        global $WOOCS;
        $currrent = $WOOCS->current_currency;
        if ($currrent != $WOOCS->default_currency AND $WOOCS->is_multiple_allowed) {
            $currencies = $WOOCS->get_currencies();
            $rate = $currencies[$currrent]['rate'];
            $addon['price'] = $addon['price'] * $rate;
        }
    }
    
  • Ajoutez également le code suivant dans le même fichier :
    if (class_exists('WOOCS')) {
        global $WOOCS;
        $currrent = $WOOCS->current_currency;
        if ($currrent != $WOOCS->default_currency AND $WOOCS->is_multiple_allowed) {
            $currencies = $WOOCS->get_currencies();
            $rate = $currencies[$currrent]['rate'];
            $addon_price = $addon_price * $rate;
        }
    }
    
  • Dans le fichier wp-content\plugins\woocommerce-product-addons\includes\class-wc-product-addons-display.php, ajoutez le code suivant :
    $suffix = ''; //woocs fix
    $woocs_is_multiple = 0;
    if (class_exists('WOOCS')) {
        global $WOOCS;
        $woocs_is_multiple = $WOOCS->is_multiple_allowed;
    }
    
  • Dans le même fichier, ajoutez également :
    'woocs_is_multiple' => $woocs_is_multiple
  • Dans le fichier wp-content\plugins\woocommerce-product-addons\assets\js\frontend/addons.js, ajoutez le code suivant :
    var woocs_exists = true;
    try {
        if (woocs_current_currency)
            woocs_exists = true;
    } catch (e) {
        woocs_exists = false;
    }
    if (woocs_exists) {
        if (woocs_current_currency != undefined && woocs_current_currency['rate'] != undefined && woocommerce_addons_params.woocs_is_multiple == 0) {
            self.base_price = self.base_price * woocs_current_currency['rate'];
        }
    }
    
  • Ajoutez également le code suivant dans le même fichier :
    var woocs_exists = true;
    try {
        if (woocs_current_currency)
            woocs_exists = true;
    } catch (e) {
        woocs_exists = false;
    }
    if (woocs_exists) {
        if (woocs_current_currency != undefined && woocs_current_currency['rate'] != undefined && addon_cost != undefined) {
            addon_data.cost = addon_data.cost * woocs_current_currency['rate'];
            addon_data.cost_raw = addon_data.cost_raw * woocs_current_currency['rate'];
        }
    }
    
  • et dans le fichier functions.php du thème WordPress actuel, ajoutez le code suivant :
    add_filter('woocommerce_product_addons_option_price', function ($price_html, $option, $i, $type) {
        if ($price_html AND class_exists('WOOCS')) {
            global $WOOCS;
    
            $option_price = !empty($option['price']) ? $option['price'] : '';
            $option_price_type = !empty($option['price_type']) ? $option['price_type'] : '';
            $price_prefix = 0 < $option_price ? '+' : '';
            $price_type = $option_price_type;
            $price_raw = apply_filters('woocommerce_product_addons_option_price_raw', $option_price, $option);
            $price_raw = $WOOCS->woocs_exchange_value($price_raw);
            $price_html = '(' . $price_prefix . wc_price(WC_Product_Addons_Helper::get_product_addon_price_for_display($price_raw)) . ')';
        }
    
        return $price_html;
    }, 20, 4);
    
     
Cette modification se trouve dans le fichier d'un autre plugin, donc une mise à jour du plugin l'annulera. Notez la modification et réappliquez-la après chaque mise à jour de ce plugin — ou demandez à ses auteurs d'inclure le correctif de leur côté, ce qui est la seule version qui perdure. Si la modification se trouve dans FOX lui-même, dites-nous : un correctif qui doit être réappliqué manuellement est un bug de notre côté, pas une solution.