- 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; }