add_action( 'woocommerce_product_after_variable_attributes', 'cwpai_woo_variation_settings_fields', 10, 3 );
function cwpai_woo_variation_settings_fields( $loop, $variation_data, $variation ) {
$min_qty = get_post_meta( $variation->ID, 'min_qty', true );
$max_qty = get_post_meta( $variation->ID, 'max_qty', true );
?>
<div>
<p class="form-row form-row-first">
<label><?php esc_html_e( 'Minimum Quantity', 'cwpai' ); ?></label>
<input type="number" class="short" size="5" name="min_qty[<?php echo $loop; ?>]" value="<?php echo esc_attr( $min_qty ); ?>" />
</p>
<p class="form-row form-row-last">
<label><?php esc_html_e( 'Maximum Quantity', 'cwpai' ); ?></label>
<input type="number" class="short" size="5" name="max_qty[<?php echo $loop; ?>]" value="<?php echo esc_attr( $max_qty ); ?>" />
</p>
</div>
<?php
}
add_action( 'woocommerce_save_product_variation', 'cwpai_woo_save_variation_settings_fields', 10, 2 );
function cwpai_woo_save_variation_settings_fields( $variation_id, $i ) {
$min_qty = $_POST['min_qty'][$i];
$max_qty = $_POST['max_qty'][$i];
if ( isset( $min_qty ) ) {
update_post_meta( $variation_id, 'min_qty', esc_attr( $min_qty ) );
}
if ( isset( $max_qty ) ) {
update_post_meta( $variation_id, 'max_qty', esc_attr( $max_qty ) );
}
}
add_filter( 'woocommerce_add_to_cart_validation', 'cwpai_woo_validate_min_max_quantity', 10, 5 );
function cwpai_woo_validate_min_max_quantity( $passed, $product_id, $quantity, $variation_id = '', $variations = '' ) {
if ( $variation_id ) {
$min_qty = get_post_meta( $variation_id, 'min_qty', true );
$max_qty = get_post_meta( $variation_id, 'max_qty', true );
if ( $min_qty && $quantity < $min_qty ) {
wc_add_notice( sprintf( __( 'You must add at least %s of this product to your cart.', 'cwpai' ), $min_qty ), 'error' );
$passed = false;
}
if ( $max_qty && $quantity > $max_qty ) {
wc_add_notice( sprintf( __( 'You can add a maximum of %s of this product to your cart.', 'cwpai' ), $max_qty ), 'error' );
$passed = false;
}
}
return $passed;
}
Comments