为什么woocommerce_variation_prices_price过滤器在使用修改后的$price调用时,设置s



我有这个$product->get_variation_prices()的结果,参见"price"one_answers"sale_price"

array(3) { 
["price"]=> array(3) { 
[18042]=> string(6) "910.57" 
[18044]=> string(6) "910.57" 
[18043]=> string(7) "1050.00" } 
["regular_price"]=> array(3) { 
[18042]=> string(7) "1138.21" 
[18043]=> string(7) "1138.21" 
[18044]=> string(7) "1138.21" } 
["sale_price"]=> array(3) { 
[18042]=> string(6) "910.57"
[18044]=> string(6) "910.57" 
[18043]=> string(7) "1050.00" } 
}

我从variation_prices中减去100

add_filter('woocommerce_variation_prices_price', 'theme_get_variation_price', 99, 3 );
function theme_get_variation_price($price, $variation, $product){
wc_delete_product_transients($variation->get_id());
if ( current_user_can('test') ){
return $price-100; //test
}
}

这是$product->get_variation_prices()的输出:

array(3) { 
["price"]=> array(3) { 
[18042]=> string(6) "810.57" 
[18044]=> string(6) "810.57" 
[18043]=> string(6) "950.00" } 
["regular_price"]=> array(3) { 
[18042]=> string(7) "1138.21" 
[18043]=> string(7) "1138.21" 
[18044]=> string(7) "1138.21" } 
["sale_price"]=> array(3) { 
[18042]=> string(7) "1138.21" 
[18043]=> string(7) "1138.21" 
[18044]=> string(7) "1138.21" } 
}

为什么每次我修改$price时,["sale_price"]的值自动等于["regular_price"]?我怎样才能保持"销售价格"?价值观?我错过什么了吗?编辑:澄清一下,我不希望销售价格也减少。我想保持原来的值

在WooCommerce代码参考中我发现了这个

// If sale price does not equal price, the product is not yet on sale.
if ( $sale_price === $regular_price || $sale_price !== $price ) {
$sale_price = $regular_price;
}

链接:https://woocommerce.github.io/code-reference/files/woocommerce-includes-data-stores-class-wc-product-variable-data-store-cpt.html#source-view.308

嗯,我认为它不应该有产品/变型价格与常规/销售价值不同。另外,由于这个原因,一些函数不再工作了,比如$product->is_on_sale();

最新更新