如何在WooCommerce订单中为每个项目,每个用户和每个日期设置最大限制

时间:2018-08-02 23:07:20

标签: woocommerce

我需要限制WooCommerce中的用户订单,以使每个用户每天都可以有限数量地订购某些特定产品。这样的限制是“每个用户” /“每个产品” /“每天”!

例如,每个用户每天只能购买10件商品,第二天他就可以再购买10件商品。

我检查了几乎所有与限价订单有关的插件,但没有一个具有所有这些条件。我还在这里阅读了一些示例代码,例如this one。但是由于我是php和wordpress编码的新手,所以我不知道如何将其更改为我的喜好。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我首先要在woocommerce_add_to_cart挂钩中添加一个函数。这基本上是一个挂钩,在将新产品添加到购物车时会被调用。然后,我将与用户meta合作,在发生这种情况时,我将检查用户是否已经购买了该产品。如果没有此类数据,则将其添加到用户元数据。

请注意,您在这里有两种情况-第一,只是将产品添加到购物车而不是购买,第二种是在购买产品时。这很重要,因为在这种情况下,用户从购物车中删除产品时,您还将需要一个挂钩,以便您可以更新用户元数据。在这里,您可以使用woocommerce_remove_cart_itemwoocommerce_after_cart_item_quantity_update(检查引用here

最后,您将需要挂钩订单完成->检查those挂钩。

但是,最重要的部分之一是如何为用户元数据构建数组。我建议创建一个键值为->产品ID的关联数组。作为数组的值,您可以拥有另一个带有购买日期和产品数量的数组。像这样:

$users_products = [
  product_id1 => [ 
    'date' => timestamp,
    'quantity' => 3
  ],
  product_id2 => [ 
    'date' => timestamp,
    'quantity' => 3
  ]
];

其中product_id1product_id2是实际产品ID。这样,您将更容易遍历用户元数据并检查当前产品是否在列表中。另外,为了避免使此用户元数据过大,请检查每个项目的日期是否未过时,如果不是,请从数组中删除(取消设置)此元素,然后使用刷新后的数据更新用户元。

您还需要编写更多代码,但我认为这对您来说是个不错的开始。

相关问题