如何为“woocommerce_add_to_cart”添加过滤器或挂钩

新手上路,请多包涵

在此处输入图像描述

我想同时添加两个产品到购物车,一个是原始(当前)产品,第二个是来自下拉列表

add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
$cnt=2
function custome_add_to_cart() {
    global $woocommerce;
      $cnt = $cnt + 1;
      echo $cnt."X";
      echo $p_id=$_POST['assessories'];
    $woocommerce->cart->add_to_cart($p_id, 1);

}

输出:- 正如您在下面的输出图像中看到的那样,它在购物车中多次添加相同的下拉项目,但我只想将 1 个数量添加到购物车中。似乎 add_to_cart 函数运行了很多次。我应该做什么或如何通过将第二个下拉产品作为参数添加到购物车功能来添加过滤器?所以我也可以将此产品添加到购物车中。

在此处输入图像描述

原文由 luckyamit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 423
1 个回答

您可能正在寻找的是具有某些属性的 可变产品

无论如何,如果你真的想这样做,那么你只需要 remove_action 函数:

 add_action('woocommerce_add_to_cart', 'custome_add_to_cart');
function custome_add_to_cart() {
    $p_id=$_POST['assessories'];
    remove_action('woocommerce_add_to_cart', __FUNCTION__);
    WC()->cart->add_to_cart( $p_id );
}

这可以防止动作无限循环并且非常简单。所以它只会为该产品添加一次。您可能希望获取添加到购物车的数量并将其作为第二个参数提供给 WC()->cart->add_to_cart 函数,因此它们的数量相同

__FUNCTION__ 是一个神奇的 PHP 标记,只是将当前函数的名称作为字符串提供给您,如果函数名称不同,它仍然可以工作

原文由 Tofandel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题