Woocommerce购物车:覆盖或过滤get_cart_item_quantities()

时间:2018-01-03 16:03:20

标签: php wordpress woocommerce cart hook-woocommerce

对于蛋糕店中的产品,可以在同一订单中订购不同订单日期(订单属性)的蛋糕。

只有在第二天订购蛋糕时才应考虑库存。对于未来的订单,该股票无关紧要。

所以我想修改get_cart_item_quantities()中的商品数量只为第二天订购的蛋糕分组。

到目前为止,我设法编写了一个扩展原始购物车的插件overriding get_cart_item_quantities()add_to_cart()

但是随着最近的更新,由于新的类层次结构,插件不再有效。

所以我正在寻找一种标准过滤器和操作的解决方案,这种解决方案更具有更新性。

有人可以帮忙吗?

以下是有关我想要实现的内容的更多信息:

蛋糕可以整块蛋糕(12或16件) - 这是主要产品 - 或作为四分之一蛋糕(3或4件)的变体。 店主希望管理整个蛋糕的件数,而不是变化。

此外,蛋糕可以订购,以便在第二天发货或在将来的某个时间。

只有在第二天订购蛋糕时,才能检查库存。

假设库存中有12块蛋糕。

一位顾客明天购买一整块蛋糕(本例中为12件),下周某个时候购买四分之一。

将此商品添加到购物车时,购物车应包含:

  • 明天整个蛋糕的数量
  • 在一段时间之后的季度蛋糕中的1个

我在woocommerce_add_cart_item_data

中添加了投放日期

在内部,WC_Product::has_enough_stock()应该只检查明天订购的商品和实际件数,在这种情况下,明天的整个蛋糕为12(即使购物车中的金额为1)

到目前为止,我通过覆盖WC_Cart::get_cart_item_quantities()并添加自定义过滤器来实现件数。

通过覆盖WC_Cart::add_to_cart()来修改has_enough_stock()

在结帐时,我会通过过滤woocommerce_order_item_quantity将库存量减少正确的件数。

但是,当然,使用插件解决方案,我需要几乎每次更新WooCommerce来更新插件。

我目前看到的可能性:

由于WC_Product::has_enough_stock()本身没有应用任何过滤器,我可以过滤woocommerce_product_variation_get_stock_quantity并在交货日期相关时返回实际数量,并在所有其他情况下返回假数字9999。

像这样,库存管理应该在添加到购物车,购物车和结账时(相关时)工作。

您怎么看?

0 个答案:

没有答案