PluginProbe ʕ •ᴥ•ʔ
WPML Multilingual & Multicurrency for WooCommerce / 5.5.7
WPML Multilingual & Multicurrency for WooCommerce v5.5.7
5.5.7 5.3.8 5.3.9 5.4.3 5.4.4 5.4.5 5.5.1 5.5.1.1 5.5.2.2 5.5.2.3 5.5.3 5.5.3.1 5.5.4 5.5.5 5.5.6 trunk 0.9 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.2 2.3 2.3.1 2.3.2 3.0 3.0.1 3.1 3.2 3.2.1 3.2.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.5.3 3.5.4 3.5.5 3.6 3.6.1 3.6.10 3.6.11 3.6.2 3.6.3 3.6.4 3.6.5 3.6.5.1 3.6.6 3.6.7 3.6.8 3.6.9 3.7 3.7.1 3.7.10 3.7.11 3.7.12 3.7.13 3.7.14 3.7.15 3.7.16 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.7.8 3.7.9 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.9.0 3.9.1 3.9.1.1 3.9.2 3.9.3 3.9.4 3.9.5 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.10.4 4.11.2 4.11.3.2 4.11.5 4.11.6 4.12.1 4.12.4 4.12.5 4.12.6 4.2.0 4.2.0.1 4.2.1 4.2.1.1 4.2.10 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.7.1 4.2.8 4.2.8.1 4.2.9 4.3.0 4.3.1 4.3.2 4.3.2.1 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.4.0 4.4.1 4.4.2 4.4.2.1 4.5.0 4.6.0 4.6.1 4.6.2 4.6.2.1 4.6.3 4.6.5 4.6.6 4.6.7 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.9.0 4.9.1 5.0.1 5.0.2 5.1.1 5.1.2 5.1.3 5.2.0 5.2.1 5.3.2 5.3.3.1 5.3.4 5.3.5 5.3.6 5.3.7
woocommerce-multilingual / classes / Rest / Store / PriceRangeHooks.php
woocommerce-multilingual / classes / Rest / Store Last commit date
HooksFactory.php 1 week ago MulticurrencyHooks.php 1 week ago PriceRangeHooks.php 1 week ago ReviewsHooks.php 1 year ago
PriceRangeHooks.php
48 lines
1 <?php
2
3 namespace WCML\Rest\Store;
4
5 use WCML\Rest\Functions;
6 use WPML\FP\Obj;
7
8 use function WPML\FP\partialRight;
9
10 class PriceRangeHooks implements \IWPML_Action {
11
12 private $woocommerce_wpml;
13
14 public function __construct( $woocommerce_wpml ) {
15 $this->woocommerce_wpml = $woocommerce_wpml;
16 }
17
18 public function add_hooks() {
19 add_filter( 'rest_request_after_callbacks', [ $this, 'convertPriceRange' ], 10, 3 );
20 }
21
22 public function convertPriceRange( $response, $handler, $request ) {
23 if (
24 \WP_REST_Server::READABLE === $request->get_method()
25 && 'products/collection-data' === Functions::getStoreStrippedEndpoint( $request )
26 && $request->get_param( 'calculate_price_range' )
27 ) {
28 $mc = $this->woocommerce_wpml->multi_currency;
29
30 $fromCurrency = $mc->get_default_currency();
31 $toCurrency = $mc->get_client_currency();
32 if ( $fromCurrency !== $toCurrency ) {
33 $data = $response->get_data();
34 if ( ! empty( $data['price_range'] ) ) {
35 $convert = partialRight( [ $mc->prices, 'convert_price_amount' ], $toCurrency );
36 $data = Obj::over( Obj::lensPath( [ 'price_range', 'min_price' ] ), $convert, $data );
37 $data = Obj::over( Obj::lensPath( [ 'price_range', 'max_price' ] ), $convert, $data );
38 $response->set_data( $data );
39 }
40
41 }
42 }
43
44 return $response;
45 }
46
47 }
48