返回

如何在 WooCommerce 中防止不同类别商品交叉添加到购物车?

php

## 防止 WooCommerce 中商品交叉类别添加到购物车的终极指南

简介

在管理 WooCommerce 商店时,确保客户只能购买兼容商品非常重要。为了实现这一点,有必要限制不同类别商品添加到购物车的行为。本文将提供一个分步指南,教你如何使用自定义代码轻松实现此功能。

步骤 1:创建验证函数

第一步是创建一个名为 validate_add_to_cart 的函数。此函数将在商品添加到购物车时运行验证,检查其类别是否与购物车中的商品冲突。

function validate_add_to_cart( $passed, $product_id ) {

  // 获取受限类别和要添加到购物车的商品类别
  $restricted_categories = array( 'glamp', 'horse', 'foodtruck', 'other', 'farm' );
  $product_categories = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'slugs' ) );

  // 检查购物车中是否有受限类别
  foreach ( WC()->cart->get_cart() as $cart_item ) {
    $cart_categories = wp_get_post_terms( $cart_item['product_id'], 'product_cat', array( 'fields' => 'slugs' ) );
    if ( array_intersect( $restricted_categories, $cart_categories ) ) {
      wc_add_notice( '抱歉,只能单独购买受限类别的商品。请结账当前购物车或清空购物车后重试。', 'error' );
      $passed = false;
      break;
    }
  }

  // 检查要添加到购物车的商品是否有受限类别
  if ( array_intersect( $restricted_categories, $product_categories ) ) {
    wc_add_notice( '抱歉,只能单独购买受限类别的商品。请结账当前购物车或清空购物车后重试。', 'error' );
    $passed = false;
  }

  return $passed;
}

步骤 2:添加过滤器钩子

创建验证函数后,将其添加到 WooCommerce 的验证购物车钩子中。这将使函数在每次商品添加到购物车时自动运行。

add_filter( 'woocommerce_add_to_cart_validation', 'validate_add_to_cart', 10, 2 );

结论

通过遵循这些步骤,你可以轻松防止将其他类别的商品添加到 WooCommerce 购物车中。这将确保你的客户仅购买兼容商品,并优化他们的结账体验。

常见问题解答

  • 我可以在验证中包含更多类别吗?

当然,你可以根据需要向 $restricted_categories 数组中添加更多类别。

  • 我可以限制所有类别吗?

不可以,因为 WooCommerce 要求至少有一个类别。

  • 验证会影响其他插件吗?

通常不会,但如果其他插件也使用 woocommerce_add_to_cart_validation 钩子,则可能会发生冲突。

  • 添加商品到购物车时会显示错误吗?

是的,如果验证失败,错误消息会添加到客户的通知中。

  • 我可以自定义错误消息吗?

是的,你可以编辑 wc_add_notice 函数中的错误消息文本。