2016年7月1日金曜日

【備忘録】WooCommerce 2.6.2(プラグイン)で日本の郵便番号についてはハイフンが自動付与される機能が実装

WooCommerceでの日本の郵便番号でハイフンを入れたい (WordPress.org 日本語版)でのやり取りを経て、実装されたっぽいので備忘録としてメモっておきます。
私自身はこのプラグインは使っておりませぬ (^^;

今回の修正で、日本、ポルトガルの補正が追加されたようです。
日本は、XXXYYYY --> XXX-YYYY、ポルトガルは、XXXXYYY → XXXX-YYY に登録時に自動補正されるってことですね(つまりハイフンありなし関係なく、ハイフンありに補正されて登録される)。

下記は左が 2.6.1 、右が 2.6.2 の includes/wc-formatting-functions.php のソースの該当部分です。




ちょっと動作について調べてみた


2.6.0 より今のような補正コードになったようですね。
function wc_format_postcode( $postcode, $country ) {
$postcode = wc_normalize_postcode( $postcode );
switch ( $country ) {
           <国別補正処理>
 }
return apply_filters( 'woocommerce_format_postcode', $postcode, $country );
}
で、
function wc_normalize_postcode( $postcode ) {
   return preg_replace( '/[\s\-]/', '', trim( strtoupper( $postcode ) ) );
}
のように、wc_normalize_postcode で1バイト空白とハイフンを除去してから switch ( $country ) で補正内容を書いていくって感じですね。

2.5.5では、下記のコードになっていました。

function wc_format_postcode( $postcode, $country ) {
$postcode = strtoupper( trim( $postcode ) );
$postcode = trim( preg_replace( '/[\s]/', '', $postcode ) );

if ( in_array( $country, array( 'GB', 'CA' ) ) ) {
$postcode = trim( substr_replace( $postcode, ' ', -3, 0 ) );
}

return $postcode;
}

補正されている国の郵便番号フォーマットについて調べてみた


ちょっと興味があったので調べてみました。
その過程で、国別の郵便番号フォーマットを纏めたサイトを発見!


何かの役に立つかもしれません。

ポルトガル(PT)の郵便番号フォーマット(XXXX-YYY )



数字のみの7桁のようですね。その後に郵便局の場所が最大25文字以内

イギリス(GB)の郵便番号フォーマット




英数字で5桁〜7桁のいくつかの種類があるようです。
1バイト空白で2つに別れた英数字のあとのほうは3桁固定のようですね。

なので、プログラム処理をみれば、

  • trim( substr_replace( $postcode, ' ', -3, 0 ) );

であり、後から3文字目と4文字目の間に1バイト空白をあけるということになっています。

カナダ(CA)の郵便番号フォーマット

これもプログラム処理上は、イギリスと同じく後から3文字目と4文字目の間に1バイト空白をあけるということになっています。

6文字で構成されて、「3文字  3文字」の英数字に分かれているようですね。

ふーむ、海外に郵便を出すことがないので全然知りませんでした。
よくいくタイは、5桁の数字、ベトナムは6桁の数字かぁ。なるほど〜。

2016年7月1日 @kimipooh

0 件のコメント:

コメントを投稿