当前位置: 首页 > 知识库问答 >
问题:

在Woocommerce中使用add_to_cart方法时获取购物车项键

宇文航
2023-03-14

所以我正在开发一个电子商务的WooCommerce,我正在通过add_to_cart函数手动添加一个产品。我获得add_to_cart(order_item_id)的返回值,并与其他一些值一起存储在一个自定义表中。

问题是,在支付网关中,我试图添加一个逻辑,并且需要从DB中获取这些信息,我试图获取WC()->cart->cart_contents,执行一个foreach并使用该键在自定义表中执行一个select,但该键是一个散列,而add_to_cart函数返回的值是一个整数。

有人能帮我一把吗?

共有1个答案

邰伟彦
2023-03-14

通常,如果查看wc_cartadd_to_cart()方法的源代码,在成功添加到购物车时,将返回正确的所需购物车项键,如下所示:

$cart_item_key = add_to_cart( $product_id ); 

现在,您可以使用woocommerce_add_to_cart中挂钩的自定义函数来获取必要的cart_item_key,并将所有必要的相关信息存储在自定义数据库中。

这个挂钩函数中有所有必要的参数,您可以用于它:

add_action( 'woocommerce_add_to_cart', 'custom_action_add_to_cart', 20, 6 );
function custom_action_add_to_cart( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ){
    // HERE come your code
}

每次使用add_to_cart()函数时都会触发此钩子。

 类似资料:
  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅

  • 我写的函数应该检查是否有在购物车的项目,其中有一个特定的类别。 我的想法是: 我猜,get_cart()函数将返回购物车的内容,我将能够从中获取有关商品类别的信息。我需要知道get_cart()返回数组的结构,所以我写了: 得到 然后,我尝试在get_cart()函数的结果中查找类别名称: 得到了同样的错误。 使用$woocommerce而不是WC()不会产生任何效果,也不会删除 我做错了什么?我

  • 最初,我选择了一个包(Woo订阅) 然后添加了所有详细信息。 但未提交。 回到网站,所以再次购买我需要选择一个包。所以我选择了这个包,并填写了详细信息,然后转到付款包。 现在在我的购物车中,两个包都存在(即我没有第一次购买就选择的包和最近的包) 如何修复此问题,使最新选定的一个在购物车中,而较早的一个在选定最新的一个后立即删除。 我尝试了这个Woocommerce从购物车中删除所有产品,并将当前产

  • 如何在Woocommerce购物车页面中的购物车项目名称后添加产品ID? 我知道我需要先不返回,因为这样会把我从函数中拉出来,但我很好奇我该如何去做这件事。

  • 问题在于当我的客户尝试从购物车中编辑一个产品时。因为所有产品都有相同的ID(我只有一个产品),所以添加到购物车的最后一个产品的元加载到文本字段中。我当前使用产品id检索中的元,但该id与购物车中的所有其他产品相同。有没有其他方法可以在不使用/(如或使用会话)的情况下检索元?

  • 我正在尝试获取WooCommerce产品的自定义字段值,以显示在商店系统的不同页面上。我成功地对单个产品页面执行了此操作,但相同的代码不适用于购物车。 对于单个产品,我在函数中使用了此代码。php,它可以很好地工作: 我为购物车尝试了相同的代码,但这次值没有显示在页面上。我还提到了这个线程(获取自定义属性),将$post更改为$product,但仍然没有输出。。。 有什么建议吗?