Задать вопрос
Zoylander
@Zoylander

Как выполнить проверку введеного номера для нескольких стран при оформлении заказа?

Пытаюсь написать код, который позволит магазину, работающему для России и Беларуси проверять номер телефона на код оператора и количество чисел номера в зависимости от выбранной страны доставки. Пока не работает. Может кто подскажет что не так...
add_action('woocommerce_checkout_process', 'number_mask');
function number_mask() {
global $woocommerce;
if ( isset ($woocommerce->customer->get_country() <> 'BY' )) {
    isset($_POST['billing_phone']) && ! preg_match("/^(\+375)?[0-9 \-]{9,}/i", $_POST['billing_phone'])
        wc_add_notice(__('Пожалуйста введите <strong>Номер телефона</strong> с кодом оператора.'), 'error');
}
if ( isset ($woocommerce->customer->get_country() <> 'RU' )) {
    isset($_POST['billing_phone']) && ! preg_match("/^(\+7)?[0-9 \-]{10,}/i", $_POST['billing_phone'])
        wc_add_notice(__('Пожалуйста введите <strong>Номер телефона</strong> с кодом оператора.'), 'error');

}}
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя Ivan Gvrl К ответам на вопрос (2)
Zoylander
@Zoylander Автор вопроса
По итогу решил использовать такое решение:
add_action('woocommerce_checkout_process', 'custom_checkout_field_process');
function custom_checkout_field_process() {
    // Check the number phone
    if ( isset($_POST['billing_phone']) && ! preg_match("/^(7|\+7|8|375|\+375|8)?[0-9]{9,10}/", $_POST['billing_phone']) )
        wc_add_notice(__('Пожалуйста введите <strong>Номер телефона</strong> с кодом оператора.'), 'error');
}
Ответ написан
Комментировать