如果我正确理解您的问题,您希望 woocommerce 阻止用户选择可变产品的某些选项组合,除非实际存在所选选项的变体并且有货?
这可能是由于woocommerce_ajax_variation_threshold。如果您的产品包含比阈值指定的更多变体,woocommerce 将等到用户选择了所有变体选项,然后再确定所选选项组合是否有效(有库存、存在等)。如果用户选择了无效或没有库存的组合,您将获得
抱歉,没有符合您选择的产品。请选择不同的组合
假设您有一个产品,您可以在其中设置以下属性:
内饰, 底座, 扶手头枕, 背部
那是5个不同的属性。如果这些属性中的每一个都有5 个选项,那么假设用户必须选择所有5个选项,则有25种不同的可能组合。如果用户不必选择所有5 个选项,那么还有更多可能的组合。
因此,即使您实际上只为该产品创建了2 个变体,它的woocommerce_ajax_variation_threshold也将是25,这意味着25 个可能的选项(变体)。
我认为默认情况下woocommerce_ajax_variation_threshold设置为10。
因此,要修复(过滤器)这个问题,请将woocommerce_ajax_variation_threshold设置为更高的值。如果您的产品有 30 种可能的组合(无论它们是否实际存在),请将阈值设置为高于 30 的值,例如 1111。
您可以在您的 functions.php 文件中使用下面的代码片段。
/* Increase Woocommerce Variation Threshold */
function wc_ajax_variation_threshold_modify( $threshold, $product ){
$threshold = '1111';
return $threshold;
}
add_filter( 'woocommerce_ajax_variation_threshold','wc_ajax_variation_threshold_modify', 10, 2 );