下面的代碼在 success.php
用户點加入購物車後, 彈出下面提醒


$product_id = “”;
$items = WC()->cart->get_cart();
$product_id = end($items)[‘variation_id’];
$product = wc_get_product( $product_id );
$picid = $product->get_image_id();
$feature_url = get_the_guid($picid);
如果一個產品只加一次, 是正常的, 如果 4 個顏色分別加入購物車後, 在將其中任何一個顏色加入購物車, 獲取的 product id 都將是購物車裏位於最底下的那個產品.
截圖中你可以看到, 我選擇了灰色, 但是跳出來的確是黑色.
也就是下面這行代碼給的是購物車裏最底下的那個產品的 id 而不是最新加入購物車的 id.
$product_id = end($items)[‘variation_id’];
我在 stack overflow 尋求幫助, 但是他們給出的最後答案還是上面這個.
https://stackoverflow.com/questions/52281956/get-last-added-to-cart-product-id-in-woocommerce
我還有一種解決方案, 但是也有問題:
我在 functions.php 里加了這幾行代碼:
add_action( ‘woocommerce_add_cart_item_data’, ‘woo_custom_add_to_cart’,10,3 );
function woo_custom_add_to_cart( $cart_item_data,$productId, $variation_id ) {
setcookie(“newtocart”, $variation_id);
}
然後在 success.php
$product_id = $_COOKIE[“newtocart”];
用這個代碼, 就是感覺 系統先跑了 success.php 然後才運行了 woocommerce_add_cart_item_data 這個函數. 導致就是 每次 得到的結果都是上一次加入購物車的產品 id. 第一次則為空.
如果我依次將 4 種顏色: 紅, 白, 黃, 綠 加入到購物車.
那麼我這 4 次獲得的產品 id 將是 : 空, 紅, 白, 黃.
管理員如果對上面任何一種有解決的方法, 請告訴我下. 謝謝了.