WooCommerce产品变量能否单独设置Sold individually选项?
WooCommerce可变产品单独配置“单独售卖”选项
WooCommerce原生后台没有为单个变量单独设置「Sold individually(单独售卖)」的选项,全局设置会统一作用于所有变量。但可以通过自定义代码实现这个需求,具体步骤如下:
添加变量自定义字段
在产品变量的编辑界面添加一个复选框,用于单独设置该变量的“单独售卖”状态:add_action( 'woocommerce_variation_options_pricing', 'add_individual_sell_per_variation_field', 10, 3 ); function add_individual_sell_per_variation_field( $loop, $variation_data, $variation ) { woocommerce_wp_checkbox( array( 'id' => '_sold_individually_variation[' . $loop . ']', 'label' => __('单独售卖', 'woocommerce'), 'description' => __('勾选后该变量只能单独购买', 'woocommerce'), 'value' => get_post_meta( $variation->ID, '_sold_individually_variation', true ), 'wrapper_class' => 'form-row form-row-full', ) ); }保存自定义字段值
处理字段的保存逻辑,将设置的值存入数据库:add_action( 'woocommerce_save_product_variation', 'save_individual_sell_per_variation_field', 10, 2 ); function save_individual_sell_per_variation_field( $variation_id, $loop ) { $sold_individually = isset( $_POST['_sold_individually_variation'][$loop] ) ? 'yes' : 'no'; update_post_meta( $variation_id, '_sold_individually_variation', $sold_individually ); }覆盖全局设置逻辑
在加入购物车时,优先使用变量的单独设置替代全局设置:add_filter( 'woocommerce_is_sold_individually', 'override_sold_individually_for_variation', 10, 2 ); function override_sold_individually_for_variation( $sold_individually, $product ) { if ( $product->is_type( 'variation' ) ) { $variation_sold_individually = get_post_meta( $product->get_id(), '_sold_individually_variation', true ); if ( $variation_sold_individually !== '' ) { $sold_individually = $variation_sold_individually === 'yes' ? true : false; } } return $sold_individually; }
注意事项
- 将上述代码添加到当前主题的
functions.php文件,或者创建一个自定义插件来存放。 - 修改代码前请备份站点,避免出现兼容性问题。
- 测试不同WooCommerce版本的兼容性,版本更新可能需要调整代码逻辑。
内容的提问来源于stack exchange,提问作者widkoinflm
相关产品推荐
相关产品推荐

