私自身はこのプラグインは使っておりませぬ (^^;
今回の修正で、日本、ポルトガルの補正が追加されたようです。
日本は、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 )
- https://en.wikipedia.org/wiki/Postal_codes_in_Portugal
- http://ja.youbianku.com/%E3%83%9D%E3%83%AB%E3%83%88%E3%82%AC%E3%83%AB(http://ja.youbianku.com/)
数字のみの7桁のようですね。その後に郵便局の場所が最大25文字以内
イギリス(GB)の郵便番号フォーマット
- https://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdom
- http://ja.youbianku.com/%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9
英数字で5桁〜7桁のいくつかの種類があるようです。
1バイト空白で2つに別れた英数字のあとのほうは3桁固定のようですね。
なので、プログラム処理をみれば、
- trim( substr_replace( $postcode, ' ', -3, 0 ) );
であり、後から3文字目と4文字目の間に1バイト空白をあけるということになっています。
カナダ(CA)の郵便番号フォーマット
- https://en.wikipedia.org/wiki/Postal_codes_in_Canada
- http://ja.youbianku.com/%E3%82%AB%E3%83%8A%E3%83%80
これもプログラム処理上は、イギリスと同じく後から3文字目と4文字目の間に1バイト空白をあけるということになっています。
6文字で構成されて、「3文字 3文字」の英数字に分かれているようですね。
ふーむ、海外に郵便を出すことがないので全然知りませんでした。
よくいくタイは、5桁の数字、ベトナムは6桁の数字かぁ。なるほど〜。
2016年7月1日 @kimipooh
0 件のコメント:
コメントを投稿