Contact Form 7で郵便番号から住所の自動入力機能をつける

以前はajaxzipを使っていたものの、製作元が「新たに設置するときはYubinbangoをお勧めします」と出ていたのでメモ。
こちらは古いほう。Google Codeが廃止されたため跡地化しています。
Google Code Archive - Long-term storage for Google Code Project Hosting.
新しいYubinbangoライブラリはこちら。MITライセンス。ありがたい。
GitHub - yubinbango/yubinbango

設置方法

1 yubinbango.jsの読み込み

コンタクトフォームを設置するページに以下のコードを追加。


普通はhead内に設置するとよい(コードがきれいになる)のだろうけど、案件によってはContact Form 7の設定画面で、フォームの直前に入れることもある。

2 コンタクトフォームの設定

コンタクトフォームの編集画面「フォーム」タブで以下のコードを記入。


コンタクトフォームの設定画面の、郵便番号のショートコードに
class:p-postal-code
を追加する。

[text postal class:p-postal-code]

また、住所の入力フォームには、
class:p-region class:p-locality class:p-street-address class:p-extended-address
を追加する。
入力フォームが一つの場合は、

[text address class:p-region class:p-locality class:p-street-address class:p-extended-address]

となる。複数に分割する場合はclass名を別々に入れる。

3 設置するショートコードにクラスを追加。

最後に、固定ページなり投稿ページなり、コンタクトフォームを設置する際のショートコードに、formタグにclassを追加する。
例えばショートコードが

[contact-form-7 id="1" title="問い合わせフォーム"]

の場合、

[contact-form-7 id="1" title="問い合わせフォーム" html_class="h-adr"]

となる。
テンプレートで設置する場合は以下のようなコードになる。

<?php echo do_shortcode( '[contact-form-7 id="1" title="問い合わせフォーム" html_class="h-adr"]' ); ?>

簡単すぎてびびる。

郵便番号の入力は、ハイフンがあってもなくてもOK。全角でも半角でもOK。
入力欄を3桁と4桁に分けることもできます。(でもユーザビリティを考えると、1つのほうが入力が楽なのではないかと思う)
従来のAjaxZipシリーズはPrototype.jsとかjQueryとかが必要でしたが、yubinbango.jsになってからはそれらを読み込む必要もなくなりました。
製作者様に感謝です。