product_price_filter( $session_data['nyp'], $current_currency ); // Set to price in current currency. $product->set_price( $price_in_current_currency ); $product->set_regular_price( $price_in_current_currency ); $product->set_sale_price( $price_in_current_currency ); // Subscription-specific price and variable billing period. if ( $product->is_type( [ 'subscription', 'subscription_variation' ] ) ) { $product->update_meta_data( '_subscription_price', $price_in_current_currency ); } } return $session_data; } /** * Add currency to cart edit link. * * @param array $args * @return array */ public function edit_in_cart_args( $args ) { $args['nyp_currency'] = get_woocommerce_currency(); return $args; } /** * Maybe convert any prices being edited from the cart * * @param string $initial_price * @param mixed|WC_Product $product * @param string $suffix * @return string */ public function get_initial_price( $initial_price, $product, $suffix ) { if ( isset( $_REQUEST[ 'nyp_raw' . $suffix ] ) && isset( $_REQUEST[ 'nyp_currency' ] ) ) { $from_currency = wc_clean( $_REQUEST[ 'nyp_currency' ] ); $current_currency = get_woocommerce_currency(); if ( $from_currency !== $current_currency ) { $raw_price = wc_clean( $_REQUEST[ 'nyp_raw' . $suffix ] ); $multi_currency = make( \WCML_Multi_Currency::class ); $initial_price = $multi_currency->prices->convert_price_amount_by_currencies( $raw_price, $from_currency, $current_currency ); } } return $initial_price; } }