在WordPress中想要用程式的方法來驗證WooCommerce的結帳欄位,這裡指的驗證方法是後端(PHP)驗證
1. 預設驗證規則
WooCommerce會先取得結帳欄位的參數(可透過woocommerce_checkout_fields
這個filter修改),預設再幫你驗證一些規則:
- 必填,當required為true時
- 郵遞區號格式,當validate給入
postcode
時 - 電話格式:當validate給入
phone
時 - Email格式:當validate給入
email
時 - 縣市(state)有效性:當validate給入
state
時
參考WC_Checkout::validate_posted_data
這個method
2. 自訂驗證規則
如果要自訂自己的驗證規則(如身分證字號,手機號碼等),可使用woocommerce_after_checkout_validation
這個action hook
以下舉的例子為驗證台灣地區手機號碼的格式:
add_action('woocommerce_after_checkout_validation', 'octopuswp_validate_billing_mobile_number'); /** * @param array $fields POST進來的結帳欄位資料 * @param WP_Error $errors */ function octopuswp_validate_billing_mobile_number($fields, $errors) { /** * 假如手機號碼欄位key值為billing_mobile_number * 要驗證台灣手機號碼,規則是09開頭的10碼數字 */ if(!preg_match('/^09\d{8}$/', $fields['billing_mobile_number'])) { // 這裡傳入的是一個WP_Error的物件參考,只要在驗證失敗時加入一個錯誤就行 // 第一個參數是自訂的錯誤代碼,第二個參數是錯誤訊息 $errors->add('mobile-number-error', '手機號碼格式錯誤,格式為0910123456'); } }