获得最新加入购物车的产品 ID.

获得最新加入购物车的产品 ID.


正在查看 4 个帖子:1-4 (共 4 个帖子)
  • 作者
    帖子
  • lmn40227
    参与者
    • 文章数量: 23
    @lmn40227
    楼主

    下面的代码在success.php

    用户点加入购物车后,弹出下面提醒

    pop up

    $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  将是 :   空, 红,白,黄.

     

    管理员如果对上面任何一种有解决的方法,请告诉我下.谢谢了.

     

     

    诗语
    管理员
    • 文章数量: 5,858
    @feibisi

    我这给个思路你试试,如果是有多种颜色的话,你应该找的不是产品ID 而是属性ID ,也就是获取到可变产品的颜色属性ID 。

    具体实现方式可以再Google下。

     

    lmn40227
    参与者
    • 文章数量: 23
    @lmn40227
    楼主

    上面的代码就能获得属性的ID.

    只不过第一种会在 加入 已存在于购物车产品的产品发生错误.

     

    第二种网上给了答案是说cookies得等到网页刷新后得到.

    lmn40227
    参与者
    • 文章数量: 23
    @lmn40227
    楼主

    用session 解决了.

正在查看 4 个帖子:1-4 (共 4 个帖子)
  • 哎呀,回复话题必需登录。

未找到对应子版块?请直接在 [疑难杂症] 版块中发帖提问。

收藏纪念品


有奖活动

参与论坛社区问答,有机会获赠文派瓦普(Wapuu.com)手办模型。

话题信息

商业系统