通过 WooCommerce 3.3 中的挂钩更改产品变体价格
Change product variation prices via a hook in WooCommerce 3.3
我正在使用挂钩来自定义可变产品价格。
但是, 似乎不适用于 Woocommerce 3.3.5。
我在我的 functions.php
文件中使用以下内容(来自之前的 post):
add_filter('woocommerce_variation_prices_price', 'custom_variation_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variation_price', 99, 3 );
function custom_variation_price( $price, $variation, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($variation->get_id());
return $price * 3; // X2 for testing
}
在产品页面上,产品变体的价格范围显示正确的价格(原价*3),但是当我 select 选项时,显示的变体价格是未过滤的。我在这里遗漏了什么吗?
编辑: 我对简单产品和产品变体的价格计算略有不同。我最终得到了 3 个函数:
// Simple
add_filter('woocommerce_product_get_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'custom_price', 99, 2 );
// Variable
add_filter('woocommerce_product_variation_get_regular_price', 'custom_price_2', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'custom_price_2' , 99, 2 );
// Variations (of a variable product)
add_filter('woocommerce_variation_prices_price', 'custom_variation_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variation_price', 99, 3 );
function custom_price( $price, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($product->get_id());
return $price * 3; // X3 for testing
}
function custom_price_2( $price, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($product->get_id());
return $price * 2; // X2 for testing
}
function custom_variation_price( $price, $variation, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($variation->get_id());
return $price * 2; // X2 for testing
}
still work for Woocommerce 3.3.x, see 在 Woocommerce 3 上测试。3.x …您的代码还未完成…
您需要使用:
// Variable
add_filter('woocommerce_product_variation_get_regular_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'custom_price' , 99, 2 );
// Variations (of a variable product)
add_filter('woocommerce_variation_prices_price', 'custom_variation_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variation_price', 99, 3 );
function custom_price( $price, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($product->get_id());
return $price * 3; // X3 for testing
}
function custom_variation_price( $price, $variation, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($variation->get_id());
return $price * 3; // X3 for testing
}
我正在使用挂钩来自定义可变产品价格。
但是,
我在我的 functions.php
文件中使用以下内容(来自之前的 post):
add_filter('woocommerce_variation_prices_price', 'custom_variation_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variation_price', 99, 3 );
function custom_variation_price( $price, $variation, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($variation->get_id());
return $price * 3; // X2 for testing
}
在产品页面上,产品变体的价格范围显示正确的价格(原价*3),但是当我 select 选项时,显示的变体价格是未过滤的。我在这里遗漏了什么吗?
编辑: 我对简单产品和产品变体的价格计算略有不同。我最终得到了 3 个函数:
// Simple
add_filter('woocommerce_product_get_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'custom_price', 99, 2 );
// Variable
add_filter('woocommerce_product_variation_get_regular_price', 'custom_price_2', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'custom_price_2' , 99, 2 );
// Variations (of a variable product)
add_filter('woocommerce_variation_prices_price', 'custom_variation_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variation_price', 99, 3 );
function custom_price( $price, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($product->get_id());
return $price * 3; // X3 for testing
}
function custom_price_2( $price, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($product->get_id());
return $price * 2; // X2 for testing
}
function custom_variation_price( $price, $variation, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($variation->get_id());
return $price * 2; // X2 for testing
}
您需要使用:
// Variable
add_filter('woocommerce_product_variation_get_regular_price', 'custom_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'custom_price' , 99, 2 );
// Variations (of a variable product)
add_filter('woocommerce_variation_prices_price', 'custom_variation_price', 99, 3 );
add_filter('woocommerce_variation_prices_regular_price', 'custom_variation_price', 99, 3 );
function custom_price( $price, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($product->get_id());
return $price * 3; // X3 for testing
}
function custom_variation_price( $price, $variation, $product ) {
// Delete product cached price (if needed)
wc_delete_product_transients($variation->get_id());
return $price * 3; // X3 for testing
}