Убрать проверку полей с условиями выбора страны WooCommerce

Столкнулся с ситуацией, когда при установленном плагине Saphali Woocommerce Russian, который играл роль удобной настройке полей в заказе происходил маленький баг. Суть была в том, что для магазина поле почтовый индекс было обязательным.

Но проблема в том, что в ОАЭ нет таковых индексов, в каком понимании они есть у нас. Они используют Post Office Box. А у WooCommerce по дефолту скрывает поле shipping_postcode при выборе этой страны.

Таким образом, когда этими полями управляет Saphali Woocommerce Russian и в настройках стоит, что поле почтового индекса является обязательным – происходит конфликт. При проверке полей WooCommerce сообщает, что поле необходимо заполнить, но пользователь его не видит и не может это сделать.

Что можно сделать в этом случае? Самое простое решение, использовать хук woocommerce_checkout_fields, который получает все данные о полях и поменять их.

// Убираем валидацию почтового индекса для ОАЭ
add_filter( 'woocommerce_checkout_fields' , 'webgleb_postcode_required_false_for_uae' );
function webgleb_postcode_required_false_for_uae( $fields ) {
    $custome_shipping_country = WC()->customer->get_shipping_country();
    if( $custome_shipping_country == 'AE' ) {
        $fields['billing']['billing_postcode']['required'] = false;
        $fields['shipping']['shipping_postcode']['required'] = false;
    }
    return $fields;
}

Получается, что мы просто получаем страну пользователя, если это ОАЕ, то ставим эти поля не обязательными. Таким образом вы можете делать любые условия, которые будут касаться выбора страны. Надеюсь Вам пригодится.

Leave a Reply

Your email address will not be published. Required fields are marked *