ContactForm7で「郵便番号を入力したら住所が自動で入る」フォームを作りたい。
でもどのやり方が一番シンプルで、WordPressの構成を壊さないのか分からない…😭
そんな方向けに、実際の案件でも使っているfunction.php方式をそのまま紹介します!
プラグイン不要・header.phpを直接触らない・子テーマのfunction.phpだけで完結するので、 既存テーマをカスタマイズしている環境でも安全に導入できます。
目次 非表示
完成イメージ
郵便番号(7桁)を入力してキーを押すと、住所欄に都道府県+市区町村+町名までが自動で入ります。
番地やマンション名は手入力してもらう構成です。

使用するライブラリについて
住所変換には「AjaxZip3」を使用します。
GitHubで公開されている無料のJavaScriptライブラリで、郵便番号データは yubinbango.github.io から取得する仕組みです。
2026年3月時点で正常に動作することを確認済みです。
外部サービスへの依存があるため、万が一サービスが停止した場合は動作しなくなる点は ご承知おきください(その場合は後述の代替手段も参照してください)。
実装手順
Step1|function.phpにスクリプトを登録する
header.phpを直接編集する方法もありますが、既存テーマの子テーマを使っている場合は function.phpに書くほうがシンプルで安全です。 以下をそのまま子テーマの functions.php にコピーしてください。
function enqueue_ajaxzip3_script() {
// スクリプトを読み込むページのスラッグを配列で指定
$page_slugs = array('contact', 'order');
if (is_page($page_slugs)) {
wp_enqueue_script('jquery');
wp_enqueue_script(
'ajaxzip3',
'https://ajaxzip3.github.io/ajaxzip3.js',
array('jquery'),
null,
false
);
wp_add_inline_script('ajaxzip3', '
jQuery(function() {
jQuery("#zip").on("keyup input", function(event) {
AjaxZip3.zip2addr(this, "", "addr", "addr");
});
});
');
}
}
add_action('wp_enqueue_scripts', 'enqueue_ajaxzip3_script');Step2|ContactForm7のフォームタグを設定する
CF7のフォーム編集画面に、以下のタグを使って郵便番号欄と住所欄を作ります。
id の指定が動作のキモなので、必ずこの通りに記述してください。
<label>郵便番号
[text zip id:zip placeholder "1234567(ハイフンなし)"]
</label>
<label>ご住所
[text* addr id:addr placeholder "自動で入力されます"]
</label>
※番地・マンション名まで忘れずご記入ください。都道府県+市区町村+町名がまとめて「ご住所」欄に入ります。
番地やマンション名はユーザーに追記してもらう形です。
住所を「都道府県」「市区町村以降」に分けたい場合
都道府県とそれ以降を別フィールドに分けたい場合は、 function.phpのinlineスクリプトとCF7タグを以下のように変更します。
wp_add_inline_script('ajaxzip3', '
jQuery(function() {
jQuery("#zip").on("keyup input", function(event) {
AjaxZip3.zip2addr(this, "", "pref", "addr");
});
});
');<label>郵便番号
[text zip id:zip placeholder "1234567(ハイフンなし)"]
</label>
<label>都道府県
[text* pref id:pref placeholder "自動で入力されます"]
</label>
<label>市区町村・番地以降
[text* addr id:addr placeholder "自動入力後、番地まで追記してください"]
</label>zip2addr の第3引数が都道府県フィールドのid、第4引数が市区町村以降のフィールドのidです。
よくある質問
- 郵便番号をペースト(貼り付け)しても反応しない
- keyupだけで動作するコードの場合、貼り付け操作では反応しないことがあります。
この記事のコードは keyup と input の両方を監視しているため、 ペーストでも自動入力が動作します。
- 7桁入力しても何も起きない
- id:zip と id:addr の指定が合っているか確認してください。
また、jQueryが読み込まれているかブラウザのコンソールでエラーを確認してみてください。
- ハイフンあり(123-4567)でも動く?
- AjaxZip3はハイフンを自動で除去して処理してくれるため、 ハイフンありで入力されても問題なく動作します。
- 複数のフォームページで使いたい
- function.phpの $page_slugs 配列にページスラッグを追加するだけでOKです。 該当ページにだけスクリプトが読み込まれます。
- AjaxZip3が将来使えなくなったら?
- AjaxZip3は外部サービスのため、万が一サービスが停止した場合は動作しなくなります。
その際の改修については、パリスタデザイン事務所までお気軽にご相談ください。
無料でお見積もりいたします。
まとめ
ContactForm7の郵便番号自動入力は、AjaxZip3を使えばプラグインなし・ header.php直接編集なしで実装できます。
function.phpへの数十行の追加だけで完結するので、 既存テーマへの影響を最小限にしたい場面でも安心して導入できる方法です。
関連する実装記事もあわせてどうぞ!
↓
この記事を書いた人

パリスタデザイン事務所のWebデザイナー・フロントエンドエンジニア。
WordPress構築・カスタマイズを中心に、CMS設計・構築や情報設計を得意としています。
AIやWeb技術、PC/ガジェットを活用しながら、「無理なく続く仕組みづくり」や実務に役立つ知見を発信しています。


