WPML
สถานะ
เปิด
รายงานสำหรับ
WPML Multilingual & Multicurrency for WooCommerce 5.3.2
ปลั๊กอิน/ธีมที่เกี่ยวข้อง
WooCommerce Subscriptions
แท็กหัวข้อ
Compatibility, WCML

ภาพรวมของปัญหา

ใน WooCommerce Subscriptions เมื่ออัปเดตการสมัครสมาชิก (ไม่ว่าจะเป็นการอัปเกรด ดาวน์เกรด หรือครอสเกรด) ราคาจะไม่ถูกกรองอย่างถูกต้อง ซึ่งส่งผลให้ราคาไม่ถูกต้องระหว่างการเปลี่ยนแผนการสมัครสมาชิก

วิธีแก้ปัญหาชั่วคราว

โปรดตรวจสอบให้แน่ใจว่าคุณมีการสำรองข้อมูลอย่างครบถ้วนสำหรับไซต์ของคุณก่อนดำเนินการต่อ


  • เปิดไฟล์ …/wp-content/plugins/woocommerce-multilingual/compatibility/WcSubscriptions/MulticurrencyHooks.php

  • ค้นหาบรรทัดที่ 253

  • เปลี่ยน:
    	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;
    	}

  • เป็น:
    	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;
    	}

ปัญหาที่ทราบแล้วทั้งหมด →