- 状态
- 未解决
- 报告针对
- 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; }