【问题标题】:How to set a maximum limit in WooCommerce orders per item & per user & per date如何为每个项目、每个用户和每个日期设置 WooCommerce 订单的最大限制
【发布时间】:2018-08-02 23:07:20
【问题描述】:

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

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

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

感谢您的帮助

【问题讨论】:

  • 对不起,你的问题太宽泛了,太真实了。
  • @LoicTheAztec 如果可能的话至少给我指出正确的方向。难道没有一段代码我可以编辑而不是从头开始写整个事情吗?因为我不知道从哪里开始。
  • 我很抱歉,但您最好为此聘请精通 woocommerce 开发人员...您可以查看 Woocommerce top users list in StackOverFlow 或在其他地方搜索,例如 Woocommerce official developer list...

标签: woocommerce


【解决方案1】:

我将从向woocommerce_add_to_cart 钩子添加一个函数开始。这基本上是一个在将新产品添加到购物车时调用的钩子。然后我将与用户元一起工作,我将在发生这种情况时检查用户是否已经购买了该产品。如果没有此类数据,我会将其添加到用户元数据中。

请注意,这里有两种情况 - 第一种,产品只是添加到购物车中而不是购买,第二种是购买产品时。这很重要,因为当用户从购物车中删除产品时,您也会遇到这种情况,您还需要一个钩子,以便您可以更新用户元数据。在这里你可以使用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。这样,您将更容易遍历用户元并检查当前产品是否在列表中。此外,为了避免使此用户元数据太大,请检查每个项目的日期是否未过时,如果是,请从数组中删除(取消设置)此元素并使用刷新的数据更新用户元数据。

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

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2019-12-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多