Kiểm tra số điện thoại hợp lệ khi thanh toán – Woocommerce

Chào các bạn, các bạn đang sử dụng Woocomemerce để xây dựng website bán hàng, tuy nhiên khi khách hàng đã đặt hàng thì số điện thoại lại không chính xác.

Để hạn chế việc này chúng ta cần phải bổ sung thêm chức năng kiểm tra hợp lệ số điện thoại Việt Nam. Ý tưởng như sau:

  • Số điện thoại Việt Nam bao gồm: Số cố định đầu bắt đầu bằng 02, số đi động đầu bắt đầu bằng 03,05,07,08,09. Ngoài ra đôi khi còn sử dụng đầu quốc tế 84 thay vì 0. Các số còn lại đều có thể là các số trong khoản từ 0-9.
  • Form thanh toán trong Woocommerce cho phép thêm hook kiểm tra dữ liệu sau khi người dùng bấm “Thanh toán”. Chúng ta sẽ bổ sung vào bước này. Nếu như số điện thoại không hợp lệ thì sẽ cần hiển thị ra thông báo để người dùng kiểm tra lại.

Để thực hiện chúng ta sẽ làm như sau:

  • Mở file functions.php trong thư mục theme đang sử dụng của bạn
  • Thêm dòng code sau:

add_action('woocommerce_checkout_process', '__custom_checkout_field_process');

  function __custom_checkout_field_process() {

    global $woocommerce;

	//https://regex101.com/r/JdjpqD/1
	$re = '/^(0|84)(2(0[3-9]|1[0-6|8|9]|2[0-2|5-9]|3[2-9]|4[0-9]|5[1|2|4-9]|6[0-3|9]|7[0-7]|8[0-9]|9[0-4|6|7|9])|3[2-9]|5[5|6|8|9]|7[0|6-9]|8[0-6|8|9]|9[0-4|6-9])([0-9]{7})$/m';      
	
	$billing_phone = $_POST['billing_phone'];
	
	// Check if set, if its not set add an error. This one is only requite for companies
	
    if ( !preg_match($re, $billing_phone) ){

        wc_add_notice( "<strong>Mục Số điện thoại:</strong> Không phải số điện thoại Việt Nam."  ,'error' );

    }

}
  • Kiểm tra lại kết quả:

Bạn truy cập vào trang, thêm sản phẩm vào giỏ, sau đó bạn nhập số điện thoại để kiểm tra, ví dụ:

  • Các số sau sẽ có kết quả hợp lệ
84386648412
0386648412
0985391168
0777759299
02333562333
02835399144
02123014548
02403261236
02333851623
02163870688
02343954314
02283640309
02973841184
02973523165
02263576098
02043590527
0934607056
0551236592
84586184285
  • Các số sau sẽ có kết quả không hợp lệ
843866484129 
055512365929
845861842859

Scroll to Top