2017-10-06 18 views
1

Notre site WooCommerce a 2 devises. La monnaie principale est la monnaie indienne roupie et la monnaie secondaire est USD (en utilisant le commutateur de monnaie). J'ai essayé de passer une commande en USD mais la facture YITH montre le symbole de la roupie indienne principale dans la facture.Obtenir le symbole de la devise Woocommerce à partir de la commande dans le plugin facture YITH

J'ai essayé de changer à toutes sortes de plugins de change de devises disponibles mais le symbole ne changera pas dans la facture, il prend simplement le symbole monétaire par défaut.

J'ai même essayé d'ajouter 'get_woocommerce_currency_symbol()' au tableau arg en monnaie à la fonction YITH. J'ai besoin d'aide. Le plugin utilisé est YITH Invoice ver: 1.3.11.

function yith_get_formatted_price ($price, $args = array()) { 
    extract (apply_filters ('wc_price_args', wp_parse_args ($args, array (
     'ex_tax_label'  => false, 
     'currency'   => get_woocommerce_currency_symbol(), 
     'decimal_separator' => wc_get_price_decimal_separator(), 
     'thousand_separator' => wc_get_price_thousand_separator(), 
     'decimals'   => wc_get_price_decimals(), 
     'price_format'  => get_woocommerce_price_format(), 
    )))); 

    $negative = $price < 0; 
    $price = apply_filters ('raw_woocommerce_price', floatval ($negative ? $price * - 1 : $price)); 
    $price = apply_filters ('formatted_woocommerce_price', number_format ($price, $decimals, $decimal_separator, $thousand_separator), $price, $decimals, $decimal_separator, $thousand_separator); 

    if (apply_filters ('woocommerce_price_trim_zeros', false) && $decimals > 0) { 
     $price = wc_trim_zeros ($price); 
    } 

    $formatted_price = ($negative ? '-' : '') . sprintf ($price_format, get_woocommerce_currency_symbol ($currency), $price); 
    $return   = $formatted_price; 

    return apply_filters ('wc_price', $return, $price, $args); 
} 

Répondre

1

La seule façon d'obtenir le symbole monétaire de l'ordre (ou code) est d'abord obtenir l'objet WC_Order et vous pouvez obtenir de l'objet global $order; ou du $order_id avec:

$order = wc_get_order($order_id); 

Maintenant vous pouvez utiliser le WC_Abstract_Order méthode get_currency() à g et le code monétaire et, enfin, vous obtiendrez le symbole monétaire de cette façon:

$currency_code = $order->get_currency(); 
$currency_symbol = get_woocommerce_currency_symbol($currency_code); 

Ceci est testé et fonctionne sur WooCommerce 3+

+1

Oui qui a fonctionné parfaitement. Depuis $ current_order = $ document-> order; était déjà défini dans la page de fonction de facture. J'ai ensuite dû ajouter une méthode // globale $ woocommerce; $ order_currency = $ current_order-> get_order_currency(); suivi de array ('currency' => $ order_currency) partout où wc_price a été utilisé pour obtenir les prix. – SandeepTete