Убрать проверку полей с условиями выбора страны 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; }
Получается, что мы просто получаем страну пользователя, если это ОАЕ, то ставим эти поля не обязательными. Таким образом вы можете делать любые условия, которые будут касаться выбора страны. Надеюсь Вам пригодится.