标签: 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 解决了. 
- 
		作者帖子
- 哎呀,回复话题必需登录。

