- الحالة
- محلولة
- أُبلغ عنها لـ
- WPML Multilingual & Multicurrency for WooCommerce 5.1.2
- تم حلها في
- WCML 5.2.0
- الإضافة/القالب ذو الصلة
- WooCommerce
- وسوم الموضوع
- Bug
نظرة عامة على المشكلة
عند استخدام ميزة تعدد العملات الخاصة بإضافة WPML متعدد اللغات وتعدد العملات لـ WooCommerce، تعرض ودجت تصفية حسب السعر نطاق سعر غير دقيق للعملات الثانوية. فهي تعرض دائماً نطاق العملة الافتراضية.
حل بديل مؤقت
يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.
- أضف المقتطف التالي في ملف functions.php الخاص بقالبك:
use function WCML\functions\getClientCurrency; use function WPML\Container\make; add_filter( 'rest_request_after_callbacks', function( $response, $handler, $request ) { if ( wcml_is_multi_currency_on() && 'GET' === $request->get_method() && 'products/collection-data' === substr( $request->get_route(), -24 ) && ! empty( $request['calculate_price_range'] ) ) { $mc = make( \WCML_Multi_Currency::class ); $from_currency = $mc->get_default_currency(); $to_currency = getClientCurrency(); $data = $response->get_data(); $data['price_range']->min_price = $mc->prices->convert_price_amount( $mc->prices->unconvert_price_amount( $data['price_range']->min_price, $from_currency ), $to_currency ); $data['price_range']->max_price = $mc->prices->convert_price_amount( $mc->prices->unconvert_price_amount( $data['price_range']->max_price, $from_currency ), $to_currency ); $response->set_data( $data ); } return $response; }, 10, 3 );