wordpress woocommerce,允许采取产品两次尊重数量限制

toiithl6  于 2023-06-21  发布在  WordPress
关注(0)|答案(1)|浏览(99)

我需要一些关于WooCommerce问题的帮助。
例如,我想将产品“产品A”的最小值设置为1,最大值设置为3,如果客户想要更多,他可以添加几个“产品A”,但数量控制相同。
实际上,我已经在functions.php文件中添加了以下代码:

function namespace_force_individual_cart_items( $cart_item_data, $product_id ) {
  $unique_cart_item_key = md5( microtime() . rand() );
  $cart_item_data['unique_key'] = $unique_cart_item_key;

  return $cart_item_data;
}
add_filter( 'woocommerce_add_cart_item_data', 'namespace_force_individual_cart_items', 10, 2 );

它允许我将相同的产品添加到购物车两次,而不是在WooCommerce中更改数量。
它工作正常,但当我启用最小最大数量控制插件以前的行为不再工作。
我如何才能做到这一点?

yi0zb3m4

yi0zb3m41#

看起来你遇到了一个问题,最小/最大数量插件不允许你添加的自定义函数正常工作。该插件处理购物车数量的方式可能会覆盖您的自定义函数。
您可以通过添加一些直接与最小/最大数量插件交互的自定义代码来解决此问题。这里有一个例子,你可能会这样做:

function custom_override_mmq_cart_validation( $passed, $product_id, $quantity, $variation_id = null ) {
    // Fetching product
    $product = wc_get_product( $product_id );

    // Fetching the min and max values from the product
    $minimum = $product->get_meta( '_wc_min_qty_product' );
    $maximum = $product->get_meta( '_wc_max_qty_product' );

    // Validation for the minimum value
    if ( $quantity < $minimum ) {
        $passed = false;
        wc_add_notice( sprintf( __( 'You must add a minimum of %s %s to your cart.' ), $minimum, get_the_title( $product_id ) ), 'error' );
    }

    // Validation for the maximum value
    if ( $quantity > $maximum ) {
        $passed = false;
        wc_add_notice( sprintf( __( 'You can add a maximum of %s %s to your cart.' ), $maximum, get_the_title( $product_id ) ), 'error' );
    }

    return $passed;
}

add_filter( 'woocommerce_add_to_cart_validation', 'custom_override_mmq_cart_validation', 10, 4 );

请将_wc_min_qty_product_wc_max_qty_product替换为插件用于存储产品上的最小/最大数量的实际 meta密钥。如果您不确定,可以检查插件的代码以找到正确的 meta密钥。
此函数向woocommerce_add_to_cart_validation钩子添加一个过滤器,当WooCommerce验证产品是否可以添加到购物车时会触发该钩子。它检查产品的请求数量是否在您为该产品设置的最小值和最大值范围内。
如果数量小于最小值或大于最大值,它会将$passed设置为false,并向购物车添加错误通知,阻止添加产品。
将此代码添加到主题的functions.php文件中,并确保最小/最大数量插件处于活动状态。
请记住,直接修改主题文件可能会产生意想不到的后果。

相关问题