WooCommerceの請求先・送付先住所の郵便番号は、ハイフンあり、なしどちらにも対応していますが、バラバラになってしまうと管理が面倒になるので、ハイフンありに統一する方法です。
Contents
実際のコード
参考:Customizing checkout fields using actions and filters
// 郵便番号フィールドのバリデーション
add_action('woocommerce_checkout_process', function() {
// 請求先の郵便番号フィールド
if($_POST['billing_postcode']) { // 請求先の郵便番号フィールド
if(strpos($_POST['billing_postcode'], '-') === false){
wc_add_notice(__('請求先欄の郵便番号に半角ハイフンを含めてください'), 'error');
}
elseif(!preg_match("/^[0-9]{3}-[0-9]{4}$/", $_POST['billing_postcode'])) {
wc_add_notice(__('請求先欄の郵便番号は「123-4567」の形式で記入してください。'), 'error');
}
}
// 送付先の郵便番号フィールド
if($_POST['ship_to_different_address'] && $_POST['shipping_postcode']) {
if(strpos($_POST['shipping_postcode'], '-') === false){
wc_add_notice(__('配送先欄の郵便番号に半角ハイフンを含めてください'), 'error');
}
elseif(!preg_match("/^[0-9]{3}-[0-9]{4}$/", $_POST['shipping_postcode'])) {
wc_add_notice(__('配送先欄の郵便番号は「123-4567」の形式で記入してください。'), 'error');
}
}
});
まとめ
woocommerce_checkout_processのアクションでバリデーションを追加しています。
$_POSTの内容を見て他のフィールドに流用したりもできますので、ショップに合わせたカスタママイズが可能です。