Min / max quantities

PHOTO EMBED

Mon May 29 2023 10:28:31 GMT+0000 (Coordinated Universal Time)

Saved by @dawidofski

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;
}
content_copyCOPY

https://codewp.ai/replacing-woocommerce-plugins-with-ai-generated-code-snippets/