標籤: Woocomerce, 最新加入購物車, 獲得產品 ID
-
作者帖子
-
下面的程式碼在 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 將是 : 空, 紅, 白, 黃.
管理員如果對上面任何一種有解決的方法, 請告訴我下. 謝謝了.
我這給個思路你試試,如果是有多種顏色的話,你應該找的不是產品 ID 而是屬性 ID ,也就是獲取到可變產品的顏色屬性 ID 。
具體實現方式可以再 Google 下。
上面的程式碼就能獲得屬性的 ID.
只不過第一種會在 加入 已存在於購物車產品的產品發生錯誤.
第二種網上給了答案是說 cookies 得等到網頁重新整理後得到.
用 session 解決了.
-
作者帖子
- 哎呀,回覆話題必需登入。