购物车页面中插件的货币转换错误

时间:2020-03-11 17:29:44

标签: php wordpress woocommerce currency cart

我希望有人可以帮助我! 我使用的是WooCommerce Currency Switcher by PluginUs.NET.插件,一切正常,直到我进入购物车页面为止,那里的价格是第二次转换,先转换后再添加到购物车中,然后进入购物车页面。

因此,我在那里的支持页面中进行搜索,并找到了暗示此solution的主题,但是当我添加代码时,所有内容仍然相同,也许是因为该代码是三年前制作的,现在不支持该代码。新的Woocommerce版本,这是建议的代码:

    add_action('woocommerce_before_calculate_totals', 'fix_currency_conversion');
function fix_currency_conversion($cart_object){
            global $WOOCS;
            $cur_currency = $WOOCS->current_currency;
            $currencies = $WOOCS->get_currencies();
            $conversion_rate = $currencies[$WOOCS->current_currency]['rate'];
            if($cur_currency == 'HKD'){
                foreach ( $cart_object->cart_contents as $cart_item_key => $cart_item ) {
                    $cart_item['data']->price = $cart_item['data']->price / $conversion_rate;
                }
            }
}

1 个答案:

答案 0 :(得分:1)

已经晚了,但是对其他人会有所帮助。

您需要更改:

namespace MyNamespace {
    public abstract class EnumerateClass<Type, InheritingClass> : IEquatable<InheritingClass>
        where Type : IEquatable<Type>
        where InheritingClass : EnumerateClass<Type, InheritingClass> {

        internal readonly Type Identifier;

        protected EnumerateClass (Type identifier) {
            this.Identifier = identifier;
        }
        public bool Equals(InheritingClass obj)
            => this.Identifier.Equals(obj.Identifier);
        public static explicit operator Type(EnumerateClass<Type, InheritingClass> obj)
            => obj.Identifier;
    }
    public sealed class MyNumber : EnumerateClass<int, MyNumber> {

        private MyNumber(int identifier) : base(identifier) { }

        public static readonly MyNumber None = new Number(0);
        public static readonly MyNumber One = new Number(1);
        public static readonly MyNumber Two = new Number(2);
        ...

        public override string ToString() {
            switch (this.Identifier) {
                case 0: return "None";
                case 1: return "One";
                case 2: return "Two";
                ...
            }
        }
    }
}

$cart_item['data']->price = $cart_item['data']->price / $conversion_rate;