- 状态
- 已解决
- 解决于
- 4.12.0
- 相关插件/主题
- WooCommerce Dynamic Pricing
问题概述
当使用 WooCommerce Dynamic Pricing 插件的高级类别定价功能时,折扣不会应用到可变产品(仅适用于简单产品)。
临时解决方法
我们已为此问题提供永久性修复程序,目前正在等待全面测试和发布。在此期间,您可以使用以下临时解决方法来修复您站点上的问题:
- 继续操作前,请对您的站点进行完整备份。
- 打开 wp-content/plugins/woocommerce-multilingual/compatibility/class-wcml-dynamic-pricing.php 并找到第 118 行。
- 将:
public function woocommerce_dynamic_pricing_is_applied_to( $process_discounts, WC_Product $_product, $module_id, $dynamic_pricing, $cat_ids ) { if ( ! $_product || ! $cat_ids || ! $this->has_requirements( $dynamic_pricing ) ) { return $process_discounts; } $taxonomy = $this->get_taxonomy( $dynamic_pricing ); $product_id = apply_filters( 'wpml_object_id', $_product->get_id(), 'product', true ); return is_object_in_term( $product_id, $taxonomy, $this->adjust_cat_ids( $cat_ids, $taxonomy ) ); }替换为:
public function woocommerce_dynamic_pricing_is_applied_to( $process_discounts, WC_Product $_product, $module_id, $dynamic_pricing, $cat_ids ) { if ( ! $_product || ! $cat_ids || ! $this->has_requirements( $dynamic_pricing ) ) { return $process_discounts; } $taxonomy = $this->get_taxonomy( $dynamic_pricing ); $product_id = apply_filters( 'wpml_object_id', $_product->get_id(), 'product', true ); //fix for variable products if ($_product->post_type === "product_variation") { $product_id = wc_get_product( $_product->get_parent_id() )->get_id(); $product_id = apply_filters( 'wpml_object_id', $product_id, 'product', true ); return is_object_in_term( $product_id, $taxonomy, $this->adjust_cat_ids( $cat_ids, $taxonomy ) ); } return is_object_in_term( $product_id, $taxonomy, $this->adjust_cat_ids( $cat_ids, $taxonomy ) ); }