3
votes

In Woocommerce, I would like that checkout Order Notes field will be "required" only when local pickup is selected as a shipping method.

I've managed to change the local pickup label so that the customer is instructed to add details to this field but wondered if there was a way of not allowing them to proceed until they have added details to this section?

Any help would be very much appreciated.

1

1 Answers

2
votes

The code below will make "Order notes" as a mandatory field for "Local Pickup" chosen shipping method only and will display an error notice if customer try to submit his order for this requirements:

// Validate mandatory "Order notes" field for "Local Pickup" shipping methods
add_action( 'woocommerce_checkout_process', 'local_pickup_order_comment_validation', 20 );
function local_pickup_order_comment_validation() {
    $chosen_shipping = WC()->session->get( 'chosen_shipping_methods' )[0];
    $chosen_shipping = explode(':', $chosen_shipping);
    if ( $chosen_shipping[0] == 'local_pickup' && empty($_POST['order_comments']) ){
        wc_add_notice( __( "You need to fill up \"Order notes\" with some details.", "woocommerce" ), 'error' );
    }
}

Code goes in function.php file of your active child theme (or active theme). Tested and works.