Принудительно 8 цифр в телефонном номере WooCommerce - PullRequest
0 голосов
/ 03 апреля 2020

В Дании все номера телефонов состоят из 8 цифр. Мы хотим, чтобы все заказы были 8-значными, чтобы избежать ошибок и других с доставкой. Никогда меньше, никогда больше. Если не 8 цифр, они должны получить предупреждение.

// You can add a custom placeholder to add a hint for your CUs what you expect
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields2' );

// Our hooked in function - $fields is passed via the filter!
function custom_override_checkout_fields2( $fields ) {

    $fields['billing']['billing_phone']['placeholder'] = 'Add 8 digits';

    return $fields;
}

/****************************************************************/
/* VALIDATION FOR PHONE FIELD THIS WILL THROW AN ERROR MESSAGE  */
/****************************************************************/

/**
 * Process the checkout
 **
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    global $woocommerce;

    // Check if set, if its not set add an error. This one is only requite for companies
    if ( ! (preg_match('/^[0-9]{8}$/D', $_POST['billing_phone'] ))){
        wc_add_notice( "Phone number must be 8 digits"  ,'error' );
    }
}

К сожалению, это не работает. Номер все еще может быть любым.

1 Ответ

0 голосов
/ 03 апреля 2020

Используйте strlen на вашем посту. Затем оцените, равна ли она требуемой длине.

function my_custom_checkout_field_process() {
  global $woocommerce;

  // Check if set, if its not set add an error. This one is only requite for companies
  $len = strlen($_POST['billing_phone']); 
  if($len !== 8){     
    wc_add_notice( "Phone number must be 8 digits"  ,'error' );
  }
}

Если вы также хотите, чтобы она соответствовала номеру, используйте is_numeric() или !is_numeric()

$len = strlen($_POST['billing_phone']);   
if($len !== 8)){
  wc_add_notice( "Phone number must be 8 digits"  ,'error' );
  if(!is_numeric($_POST['billing_phone'])){           
    wc_add_notice( "Phone number must be number"  ,'error' );
  }
}

Вы также можете установите ваш тип ввода как tel и добавьте шаблон, если в Дании используется указанный шаблон c, это поможет отформатировать перед отправкой в ​​браузерах, которые поддерживают html 5

<input type="tel" id="phone" name="phone" pattern="[0-9]{8}" required>

OUTPUT ERROR КОГДА НОМЕР МЕНЕЕ 8:

enter image description here

ОШИБКА ВЫХОДА, КОГДА БОЛЬШЕ 8:

enter image description here

ОШИБКА ВЫХОДА, ЕСЛИ НЕ НОМЕР:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...