我在 Wordpress Woocommerce 中遇到问题,我根据他们需要的任何条件以编程方式更新产品价格。下面是一个简单的例子。我有它显示然后添加到购物车就好了。我的问题是,当用户注销并重新登录时,购物车最终会返回产品的全价。要么我错误地更新了价格,要么有更好的方法来确保购物车具有正确的折扣价。
这是我在functions.php中的内容
add_action('woocommerce_get_price_html','pricechanger');
function pricechanger($price){
$theid = get_the_ID();
$product = wc_get_product($theid);
$price = $product->price;
$price = //do something to the price here
//save the productid/price in session for cart
$_SESSION['pd']['$theid'] = $price;
add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10, 2);
add_action( 'init', 'woocommerce_add_to_cart_action', 10);
add_action( 'init', 'woocommerce_checkout_action', 10 );
return $price;
}
因为价格不会转换到添加到购物车按钮,所以我不得不将它们保存在会话中。我还没有找到将这个价格发送到购物车的任何地方。
add_action( 'woocommerce_before_calculate_totals', 'woo_add_discount');
function woo_add_discount() {
if(isset($_SESSION['pd'])) {
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
foreach($_SESSION['pd'] as $key => $val) {
if($cart_item['data']->id == $key){
$cart_item['data']->set_price($val);
}
}
}
}
}
非常感谢您的帮助!谢谢!