WPML
Trạng thái
Đang mở
Được báo cáo cho
WPML Multilingual & Multicurrency for WooCommerce 5.3.2
Plugin/giao diện liên quan
WooCommerce Subscriptions
Thẻ chủ đề
Compatibility, WCML

Tổng quan về lỗi

Trong WooCommerce Subscriptions, khi cập nhật một gói đăng ký (cho dù đó là nâng cấp, hạ cấp hay chuyển đổi chéo), giá không được lọc chính xác. Điều này dẫn đến mức giá không chính xác trong quá trình thay đổi gói đăng ký.

Giải pháp tạm thời

Vui lòng đảm bảo bạn đã tạo bản sao lưu đầy đủ cho trang web của mình trước khi tiếp tục.


  • Mở tệp …/wp-content/plugins/woocommerce-multilingual/compatibility/WcSubscriptions/MulticurrencyHooks.php.

  • Tìm dòng 253.

  • Thay đổi:
    	public function woocommerce_subscription_price_from( $price, $product ) {
    		if ( $product instanceof WC_Product_Subscription_Variation ) {
    			$customPricesOn = get_post_meta( $product->get_id(), '_wcml_custom_prices_status', true );
    
    			if ( $customPricesOn ) {
    				$price = get_post_meta( $product->get_id(), '_price_' . $this->woocommerce_wpml->multi_currency->get_client_currency(), true );
    			} else {
    				$price = apply_filters( 'wcml_raw_price_amount', $price );
    			}
    		}
    
    		return $price;
    	}

  • Thành:
    	public function woocommerce_subscription_price_from( $price, $product ) {
    		if ( $product instanceof WC_Product_Subscription_Variation || $product instanceof \WC_Product_Subscription) {
    			$customPricesOn = get_post_meta( $product->get_id(), '_wcml_custom_prices_status', true );
    
    			if ( $customPricesOn ) {
    				$price = get_post_meta( $product->get_id(), '_price_' . $this->woocommerce_wpml->multi_currency->get_client_currency(), true );
    			} else {
                    $id = $product->get_id();
                    $type = get_post_type($id);
    				$trid = apply_filters( 'wpml_element_trid', NULL, $id,  'post_'.$type );
    				$translations = apply_filters( 'wpml_get_element_translations', NULL, $trid , 'post_'.$type );
                    foreach ($translations as $translation){
                        if ($translation->original == 1){
                            if ( get_post_meta( $translation->element_id, '_wcml_custom_prices_status', true ) ) {
    	                        $price = get_post_meta( $translation->element_id, '_price_' . $this->woocommerce_wpml->multi_currency->get_client_currency(), true );
                            } else {
    	                        $price = apply_filters( 'wcml_raw_price_amount', $price );
                            }
                        }
                    }
                }
    		}
    
    		return (int)$price;
    	}

Tất cả các lỗi đã ghi nhận →