【问题标题】:Pass Woocomerce session data to databse or create custom cart data and passing it to db将 Woocommerce 会话数据传递到数据库或创建自定义购物车数据并将其传递给 db
【发布时间】:2023-03-17 05:48:01
【问题描述】:

我需要为添加到购物车的每个产品添加一个到期日期,并希望在订单完成后在订单详细信息中看到它。

$woocommerce->cart->add_to_cart($each_item[0],$each_item[1],'','',array('__expirydate',$d_expiry));

但是我正在传递的数组array('__expirydate',$d_expiry) 没有与我的购物车一起显示。或使用 woocommerce 会话添加。

所以我使用手动设置会话

WC()->session->set( 'expiry'.$each_item[0], $d_expiry );

并且工作完全正常。但是当结帐时数据没有存储在任何地方。如何添加它。

【问题讨论】:

    标签: wordpress woocommerce shopping-cart


    【解决方案1】:

    订单完成后会话被清除。您可能需要为订购的商品保存一些元信息,您可以通过 woocommerce_add_order_item_meta 挂钩来完成。

    add_action( 'woocommerce_add_order_item_meta', 'so_add_order_item_meta', 10, 3 );
    
        function so_add_order_item_meta( $order_item_id, $cart_item, $cart_item_key ) {
    
            if ( isset( $cart_item[ '__expirydate' ] ) && ! empty( $cart_item[ '__expirydate' ] ) ) {
                wc_add_order_item_meta( $order_item_id, __( 'Expiration date' ), $cart_item[ '__expirydate' ] );
            }
    }
    

    请记住,这不是剪切和粘贴解决方案,而是朝着正确的方向前进。

    此外,您可以考虑使用以下过滤器组合来代替您的会话方法:woocommerce_add_cart_item_datawoocommerce_add_cart_itemwoocommerce_get_cart_item_from_session 以将数据添加到购物车中的项目(另外,这将与我发布的代码)。

    祝你好运。

    【讨论】:

    • 我使用了woocommerce_checkout_order_processed 钩子。但是会话仍然存在。
    猜你喜欢
    • 2019-01-13
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多