【问题标题】:Disable products in same category if an item is added to the cart - WooCommerce如果将商品添加到购物车,则禁用同一类别的产品 - WooCommerce
【发布时间】:2022-10-04 20:42:50
【问题描述】:

如果将其中一件商品添加到购物车中,我一直在寻找一种解决方案来禁用同一类别的某些产品。 例如:我有 1 个类别,产品从 A 到 E。 如果我将产品 A 添加到购物车,我想禁用产品 B 和 E,因此它们无法在同一购物会话中添加到购物车。

有没有办法做到这一点? 非常感谢。

【问题讨论】:

  • 我没有代码,但不是隐藏,而是通过应用您所需的逻辑进行添加到购物车验证。您可以在线找到添加到购物车验证的代码。

标签: php wordpress woocommerce


【解决方案1】:

是的,您实际上有两种选择,一种是自定义您自己的插件并将其插入您的网站,但这实际上需要时间。另一种方法是下载批发和 b2b 插件,这些插件通常包含您正在寻找的功能,因此您将能够激活您想要的功能。

【讨论】:

    【解决方案2】:

    您可以通过在将商品添加到购物车时验证购物车来做到这一点。

    您可以通过编辑主题(或子主题)来做到这一点函数.php文件或使用您的自定义插件。

    您可以使用以下钩子'woocommerce_add_to_cart_validation'

    add_filter( 'woocommerce_add_to_cart_validation', 'allowed_item_category_in_the_cart', 10, 2 );
    
    function allowed_item_category_in_the_cart( $passed, $product_id) {
      $product = wc_get_product($product_id);
    
      // Get product categories
      $product_category_ids = $product->get_category_ids();
    
      // Then you iterate through each cart item
      foreach (WC()->cart->get_cart() as $cart_item_key=>$cart_item ){
        $cart_product_id = $cart_item['product_id'];
        $cart_product = wc_get_product($cart_product_id);
        $cart_product_category_ids = $cart_product->get_category_ids();
        if (array_intersect($cart_product_category_ids, $product_category_ids))
          return false;
      }
    
      return true;
    }
    

    PS:我刚刚写了这段代码。我还没有时间测试它。 让我知道你的反馈。

    【讨论】:

      猜你喜欢
      • 2018-04-10
      • 2014-11-21
      • 2018-09-30
      • 2021-01-31
      • 2019-01-27
      • 2020-11-15
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      相关资源
      最近更新 更多