class WDP_and_WCUMCS_compatibility { private $currency_func; public function __construct() { $this->init_hooks(); } public function init_hooks() { add_action( 'init', array( $this, 'snatch_currency_function' ), 10 ); add_filter( 'wdp_get_product_price', array( $this, 'wdp_get_product_price' ), 10, 4 ); add_filter( 'wdp_update_new_price', array( $this, 'wdp_update_new_price' ), 10, 2 ); add_filter( 'wdp_update_initial_price', array( $this, 'wdp_update_initial_price' ), 10, 2 ); add_filter( 'wdp_apply_to_wc_cart', array( $this, 'wdp_apply_to_wc_cart' ), 10, 2 ); add_filter( 'wdp_rules_amount_for_item', array( $this, 'wdp_rules_amount_for_item' ), 10, 3 ); } public function wdp_get_product_price($price, $product, $price_mode, $item_meta) { if ( ! $product->is_on_sale( 'edit' ) ) { $price = $product->get_price( '' ); } return $price; } public function snatch_currency_function() { global $wp_filter; $callbacks = $wp_filter['woocommerce_product_get_regular_price']->callbacks; if ( ! $callbacks || empty( $callbacks[9999] ) ) { return; } $callbacks = $callbacks[9999]; if ( ! count( $callbacks ) ) { return; } $callback = reset( $callbacks ); $this->currency_func = isset( $callback['function'] ) ? $callback['function'] : null; } public function wdp_update_new_price( $new_price, $wc_product ) { if ( ! $this->currency_func ) { return $new_price; } $currency_func = $this->currency_func; $rate = $wc_product->get_regular_price( '' ) !== 0 ? $currency_func( $wc_product->get_regular_price( '' ), $wc_product ) / $wc_product->get_regular_price( '' ) : 0; return (float) ( $new_price * $rate ); } public function wdp_update_initial_price( $initial_price, $wc_product ) { if ( ! $this->currency_func ) { return $initial_price; } $currency_func = $this->currency_func; return $currency_func( $initial_price, $wc_product ); } public function wdp_apply_to_wc_cart( $wdp_cart, $wc_cart ) { global $wp_filter; WDP_Frontend::remove_callbacks( $wp_filter['woocommerce_product_get_price'], array( "WooCommerce_Ultimate_Multi_Currency_Suite_Frontend|custom_item_price_final" ) ); } public function wdp_rules_amount_for_item( $wdp_rules, $item, $wc_product ) { if ( ! $this->currency_func ) { return $wdp_rules; } $currency_func = $this->currency_func; foreach ( $item->get_history() as $rule_id => $amounts ) { $wdp_rules[ $rule_id ] = $currency_func( array_sum( $amounts ), $wc_product ); } return $wdp_rules; } } new WDP_and_WCUMCS_compatibility();
WooCommerce Ultimate Multi Currency Suite, by Dev49.net Print
Created by: Alex Prokaev
Modified on: Fri, 6 Sep, 2019 at 4:06 PM
Did you find it helpful? Yes No
Send feedbackSorry we couldn't be helpful. Help us improve this article with your feedback.