WooCommerce驗證結帳欄位的方法

在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');
    }
}

 


延伸閱讀:


此篇文章版權屬於OctopusWP

轉載請註明出處 @OctopusWP (https://www.octopuswp.com)

發佈留言

×

Cart