WordPress Tips

Contact Form 7で郵便番号から住所を自動入力する方法

2016-10-03

本記事にはプロモーションが含まれています。

Contact Form 7で郵便番号から住所を自動入力する方法

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

WordPressで問い合わせフォームによく使われるプラグイン Contact Form 7

Contact Form 7で郵便番号から住所を自動入力させる方法として、プラグインを使う方法がありますがなるべくプラグインを入れずにやりたい時に。

プラグインを使って簡単に導入する方法と合わせて解説しています。

Contact Form 7で住所自動入力する方法・プラグイン追加なし

郵便番号から住所を自動入力してくれるライブラリajaxzip3 を使って実装します。ajaxzip3の基本的な使い方は以下の記事にて。

最新のYubinBangoライブラリ用はこちら

郵便番号(ワンボックス)+住所の場合

郵便番号の入力が1つのテキストボックスで住所の入力も1つのテキストボックスの場合(Bootstrap3のタグを使ってくくります)

contact form 7の入力欄(郵便番号と住所)
郵便番号欄と住所の入力欄

Contact Form 7での設定

<div class="form-group">
<label class="col-xs-3">ご住所<span class="require">※</span></label>
<div class="col-xs-9">
	<div class="form-group">
		<div class="col-xs-1"><div style="text-align:right">〒</div></div><div class="col-xs-5">[text* zip id:zip class:form-control]</div>
		</div>
	<div class="form-group">
		<div class="col-xs-12">[text* address1 id:addr1 class:form-control]</div>
		</div>
	<div class="form-group">
		<div class="col-xs-12">[text address2 id:addr2 class:form-control]</div>
		</div>
</div>
</div>

郵便番号入力用のContact Form 7タグ

本来なら郵便番号用のテキストボックスにonkeyup属性を追加するのですが、CF7タグには追加できません。

jQueryでajaxzip3を動かすためのid属性(id:zip)を指定します。必須入力にしておきます。

classは装飾用です。

[text* zip id:zip class:form-control]

住所入力フォーム用Contact Form 7タグ

この欄に住所が自動入力されるようにします。何らかの理由で自動入力が有効になっていない場合でも必ず入力してもらうために必須入力にしておきます。

[text* address1 id:addr1 class:form-control]

ビル・マンション用Contact Form 7タグ

マンション名など入力してもらう用の入力項目です。

[text address2 id:addr2 class:form-control]

WordPressでの設定(スクリプトの読み込み)

functions.phpにajaxzip3のスクリプトの読み込みを追加する設定をします。

フォームが設置されているページだけajaxzip3を読み込むようにすることで他のページで不要なスクリプトが読み込まれてパフォーマンスが落ちることを防ぎます。

function mytheme_enqueue_scripts() {
	//特定のページでのみJSを読み込み
	if(is_page('contact-demo')){
  	wp_enqueue_script( 'ajaxzip3', 'https://ajaxzip3.github.io/ajaxzip3.js', array(), '', true );
	}
}
add_action( 'wp_enqueue_scripts', 'mytheme_enqueue_scripts' );

ajaxzip3を実行する関数を挿入します。

AjaxZip3.zip2addr()に指定するのはname属性で指定した名前です。

function add_footer_script() {
	if(is_page('contact-demo')){		

    //郵便番号から住所表示
		echo '<script type="text/javascript">
        jQuery(function($){
          $(\'#zip\').keyup(function(event){
          AjaxZip3.zip2addr(this,\'\',\'address1\',\'address1\');
          });
          });

      </script>';
	}
}
add_action( 'wp_print_footer_scripts', 'add_footer_script', 100 );

郵便番号(ワンボックス)+都道府県+住所の場合

郵便番号テキストボックスと都道府県+住所の組み合わせの例です。

都道府県はドロップダウンメニューにしていますが、テキストボックスでも問題ありません。

contact-form-7%e3%81%a8ajaxzip3%e3%82%b5%e3%83%b3%e3%83%95%e3%82%9a%e3%83%ab2

Contact Form 7の設定

<div class="row">
    <div class="small-12 columns">
      <label>ご住所<span class="require">(必須)</span></label>
    </div>
    <div class="small-12 columns">
      <div class="row">
        <div class="small-1 columns"><div class="text-right middle">〒</div>
        </div>
        <div class="small-4 columns end">[text* zip id:zip]</div>
        </div>
<div class="row">
<div class="small-4 columns">
[select pref id:pref "都道府県" "北海道" "青森県" "岩手県" "宮城県" "秋田県" "山形県" "福島県" "茨城県" "栃木県" "群馬県" "埼玉県" "千葉県" "東京都" "神奈川県" "新潟県" "富山県" "石川県" "福井県" "山梨県" "長野県" "岐阜県" "静岡県" "愛知県" "三重県" "滋賀県" "京都府" "大阪府" "兵庫県" "奈良県" "和歌山県" "鳥取県" "島根県" "岡山県" "広島県" "山口県" "徳島県" "香川県" "愛媛県" "高知県" "福岡県" "佐賀県" "長崎県" "熊本県" "大分県" "宮崎県" "鹿児島県" "沖縄県"]
 </div>
<div class="small-8 columns">[text* addr1 id:addr]</div>
</div>
<div class="row">
<div class="small-12 columns">
<label for="bldg">ビル名 [text addr2 id:addr2]</label>
</div>
</div>

WordPress側の設定

wp_enqueue_scriptsフックは前述と同じように読み込み、jQueryもほぼ同様で対応するname属性(pref, addr1)を設定します。

function add_footer_script() {
	if(is_page('contact-demo')){		

    //郵便番号から住所表示
		echo '<script type="text/javascript">
        jQuery(function($){
          $(\'#zip\').keyup(function(event){
          AjaxZip3.zip2addr(this,\'\',\'pref\',\'addr1\');
          });
          });

      </script>';
	}
}
add_action( 'wp_print_footer_scripts', 'add_footer_script', 100 );

プラグインを使って住所自動入力する・zipaddr-jpの使い方

プラグインを使ってサクッと実装したい時にzipaddr-jpの使い方です。

zipaddr-jp

zipaddr-jpはContact Form 7だけでなく、その他のプラグイン(フォームやショッピングカートなど)にも幅広く対応しています。

zipaddr-jpが対応しているプラグイン

  • Contact Form 7
  • MW WP Form
  • Trust Form
  • Welcart
  • WooCommerce
  • Ninja Forms
  • WP-Members
  • WPForms
  • Visual Forms Builder

WelcartやWooCommerceにも対応しているのはありがたいですね。

プラグインを有効にすると、「Zipaddr-JP」というメニューができますが基本的にはプラグインを有効にするだけで利用できます。

zipaddr-jpの実装方法

zipaddr-jpを実装する方法はいくつかあります。

1)IDを定義する

命名規則に従って、住所を自動入力したいテキストボックスにidをつけます。

ID対応する住所
zip郵便番号
pref都道府県
city市区
area町村
addrその他住所

住所に対応するIDは細分化されていますが、一つのテキストボックスで住所入力することも可能です。

「郵便番号+住所」で設定する場合

郵便番号以外の住所をひとまとめにする場合はaddrを使います。

<p><label for="zip">郵便番号
[text* zip id:zip]</label></p>
<p><label for="addr">ご住所
[text* addr id:addr]</label></p>
zipaddr-jp 郵便番号+住所の設定例
「郵便番号+都道府県+住所」で設定する場合

zip, pref, addrを指定します。都道府県はセレクトボックスでも可能です。

<p><label for="zip">郵便番号
[text* zip id:zip]</label></p>
<p><label for="pref">都道府県
[text* pref id:pref]</label></p>
<p><label for="addr">ご住所
[text* addr id:addr]</label></p>
<p><label for="bldg">マンション・ビル名
[text* bldg id:bldg]</label></p>
zipaddr-jp 郵便番号+都道府県+住所の設定例

2)IDを定義せず、name属性だけでも可能

決められたname属性を設定すればIDを自動設定してくれます。

ID対応する住所name属性CF7タグ例
zip郵便番号name="zip"[text zip]
pref都道府県name="pref"[text pref]
city市区name="city"[text city]
area町村name="area"[text area]
addrその他住所name="addr"[text addr]
<p><label for="zip">郵便番号
[text* zip]</label></p>
<p><label for="pref">都道府県
[text* pref]</label></p>
<p><label for="addr">ご住所
[text* addr]</label></p>
<p><label for="bldg">マンション・ビル名
[text* bldg]</label></p>

3) 命名規則の文字を使う方法(※Contact Form 7では非対応)

ID、name属性を指定せず、命名ルールに従った文字があれば、自動認識してくれます。

※Contact Form 7の仕様が変わったとのことで2023年3月現在、CF7では認識してくれません。

  • 郵便番号、〒
  • 都道府県
  • 市区町村、市町村
  • 町域、地域
  • 番地、以降の住所、ご住所
<label>郵便番号
     [text* text-425]</label>

<label>都道府県
[text* text-426]
    </label>

<label>ご住所
[text* text-427]</label>

以上、zipaddr-jpプラグインを使って、住所自動入力に対応する方法でした。

やっぱりプラグインは便利ですね。

  • この記事を書いた人
  • 最新記事

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

-WordPress Tips
-,