Я не эксперт в WooCommerce, но что это за знак
<>
в коде?
Могу предположить что там должно было быть
==
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');
}}
Кстати некоторые вводят номера без плюса, а некоторые через восьмерку вообще и это все верные номера. По этому думаю это регулярное выражение подойдет для российских номеров лучше
/^(7|\+7|8)?[0-9]{10}/
Смысла ставить флаг i нету, так как все цифры одного регистра и так. А пробелы и - можно убрать из строки перед проверкой
PHP: Операторы сравнения