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);
}
}
}
}
}
助けていただければ幸いです。ありがとう!