住所自動入力プラグイン「zipaddr-jp」は、Contact Form 7と組み合わせて利用されることが多い人気ツールです。
しかし、設定自体は正しいのに住所が反映されない・郵便番号入力後も動かないといった現象に悩まされることがあります。
実はその多くが、他プラグインやテーマのスクリプトとの競合によって発生しています。
とくに、JavaScriptの読み込み順やキャッシュ最適化系プラグインの設定が原因で、zipaddr-jpのスクリプトが途中で停止しているケースが少なくありません。
- よくある競合パターン
- 原因の見つけ方(チェック手順)
- 回避・解決の方法
基本的な設定手順や初期トラブルの対処法は以下の記事で詳しく紹介していますので、まだ設定を済ませていない方はこちらを先にご覧ください。
zipaddr-jpが動かないときに疑うべき「競合」の仕組み
zipaddr-jpは、郵便番号を入力した際にJavaScriptで住所データを呼び出し、フォームの住所欄へ自動入力する仕組みです。
そのため、JavaScriptが正常に動作していない環境では、正しく住所を取得できません。
特にトラブルの多い原因が、他プラグインやテーマが読み込むスクリプトとの競合です。
WordPressの仕組み上、複数のプラグインが同じタイミングでJavaScriptを読み込むと、以下のような不具合が起きることがあります。
主な競合パターン
JavaScriptの読み込み順による衝突
zipaddr-jpよりも先に別のスクリプト(jQuery再読み込みや圧縮JSなど)が実行されると、
zipaddrの関数が「未定義」として動かなくなるケースがあります。
- Autoptimize
- LiteSpeed Cache
- W3 Total Cache
- WP Rocket
これらはJavaScriptの結合・圧縮・遅延読み込みを行うため、zipaddrの実行順序を乱すことがあります。
2. jQueryバージョンの違い
テーマや別プラグインが独自のjQueryを再読み込みしている場合、zipaddr-jpが依存する関数が利用できなくなります。
とくに古いテーマでは、WordPress標準とは異なるバージョンを呼び出していることが多く、予期せぬエラーの原因になります。
3. Ajaxフォームや非同期処理との干渉
Contact Form 7の送信確認や、予約フォームなどで使われるAjax処理が、zipaddrのスクリプトを途中でリセットしてしまうこともあります。
この場合は、ページ読み込み直後にしかzipaddr-jpが動かず、再描画されたフォームでは住所が反映されなくなるという特徴があります。
4. キャッシュやミニファイによるスクリプト破損
キャッシュプラグインや高速化設定によって、zipaddrのJSファイルが一部だけ省略・圧縮されることもあります。
これにより「Uncaught SyntaxError」「Unexpected token」などのエラーが出ることがあります。
こうした競合は見た目では分かりにくいですが、「動作していたのに突然止まった」「一部ページだけ反応しない」という場合は、ほぼ競合が原因です。
zipaddr-jpが他プラグインと競合しているか確認する方法
zipaddr-jpが動作しないとき、いきなり設定をいじる前に確認すべきなのが「他プラグインとの競合」です。
特にフォームが正しく表示されているのに住所が補完されない場合は、スクリプト競合の可能性が高いです。
ここでは、競合を見抜くための具体的な確認手順を紹介します。
1. ブラウザの開発者ツールでエラーを確認する
まずは、ブラウザ(Chromeなど)の「開発者ツール」でJavaScriptエラーを確認します。
- フォームを開いた状態で、右クリック → [検証] を選択
- 「Console(コンソール)」タブを開く
- 郵便番号を入力してみて、エラーメッセージが出ていないか確認
よくあるエラーメッセージ
Uncaught ReferenceError: zipaddr is not defined
→ zipaddr-jpのスクリプトが正しく読み込まれていません。Uncaught TypeError: $(...).zipaddr is not a function
→ jQueryとの読み込み順や競合が疑われます。
エラーが出ている場合は、そのファイル名やプラグイン名から、どのプラグインが衝突しているかを推測できます。
2. すべてのプラグインを一時的に停止して原因を切り分ける
競合の特定でもっとも確実なのが、プラグインの一時停止による切り分けです。
- 管理画面で「zipaddr-jp」と「Contact Form 7」以外のプラグインをすべて停止
- 郵便番号を入力して住所が自動入力されるか確認
- 正常に動作する場合は、他のプラグインを1つずつ有効化して再テスト
これを繰り返すことで、どのプラグインを有効化したときに動かなくなるかを突き止められます。
特に競合しやすいプラグインの例
- Autoptimize(スクリプト結合・圧縮系)
- LiteSpeed Cache、WP Rocket(遅延読み込み系)
- jQuery Manager(jQueryバージョン管理系)
- 翻訳・多言語系(Polylang、WPMLなど)
3. テーマを一時的に切り替えて確認する
まれに、プラグインではなくテーマ側のスクリプトが原因で競合していることもあります。
- 一時的に「Twenty Twenty-Five」などのWordPress公式テーマに切り替える
- フォームの動作を再確認する
公式テーマで正常に動作すれば、現在使用しているテーマに独自のjQueryや最適化スクリプトが含まれている可能性が高いです。
4. キャッシュ・圧縮プラグインの設定を確認する
キャッシュ系プラグインを使っている場合は、以下を確認してください。
- 「JavaScriptの結合」「縮小(minify)」「遅延読み込み」をOFFにする
- zipaddrのスクリプトを除外設定に追加する
- キャッシュをクリアして再読み込みする
特に、ページキャッシュが残っている状態では修正が反映されないため、確認時はブラウザキャッシュも合わせて削除するのがおすすめです。
5. 子テーマや追加スクリプトの記述を見直す
functions.phpなどにスクリプトを追記している場合も、競合の原因になります。wp_enqueue_script()の読み込み順がずれていると、zipaddr-jpが正しく動きません。
zipaddr-jpはWordPress標準のjQueryに依存しているため、wp_deregister_script('jquery');などで独自にjQueryを読み込んでいる場合は削除しましょう。
これらの確認を行うことで、「プラグイン側の問題」か「テーマ側の問題」かを切り分けられます。
zipaddr-jpが他プラグインと競合したときの回避策
競合の原因を特定したら、次は「どうやって共存させるか」です。
プラグインを削除する前に、設定や読み込み順の工夫で解決できるケースも多くあります。
ここでは、zipaddr-jpと他プラグインの競合を回避する具体的な方法を紹介します。
1. zipaddr-jpのスクリプト読み込みを後にずらす
競合の多くは、JavaScriptの読み込み順が原因です。
キャッシュ系や最適化プラグインがスクリプトを結合・圧縮した結果、zipaddr-jpの動作が途中で上書きされることがあります。
対処法:
functions.php に以下のようなコードを追記して、zipaddr-jpをページの最後に読み込むよう調整します。
function fix_zipaddrjp_script_priority() {
wp_dequeue_script('zipaddr-jp');
wp_enqueue_script('zipaddr-jp', plugins_url('/zipaddr-jp.js', __FILE__), array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'fix_zipaddrjp_script_priority', 99);
これで、zipaddr-jpのスクリプトが他のスクリプト読み込み後に確実に動作するようになります。
2. 最適化プラグインでzipaddr-jpを除外設定にする
もし「Autoptimize」や「LiteSpeed Cache」などのスクリプト最適化プラグインを使っている場合は、
zipaddr-jpのスクリプトを最適化対象から除外しましょう。
- 管理画面 → [設定] → [Autoptimize]
- 「JavaScriptコードの最適化」を有効にしている場合
- 「除外するスクリプト」欄に以下を追加
zipaddr-jp.js
- [設定] → [最適化]タブを開く
- 「JSファイルの遅延読み込み」または「結合」をOFFにする
- もしくは「除外スクリプト」に
zipaddr-jpを追加
これで、最適化プラグインによるスクリプトの圧縮や順序変更を防げます。
3. jQueryを正しく読み込むよう修正する
「zipaddr is not a function」などのエラーが出る場合、jQueryがzipaddr-jpより後に読み込まれている可能性があります。
- WordPress標準のjQueryを使っているか確認(外部CDNは避ける)
- 以下のようなコードが
functions.phpにあれば削除
wp_deregister_script('jquery');
れを削除すれば、WordPress本体が自動的に安全な順序でjQueryを読み込みます。
. テーマ内のスクリプト読み込みを確認する
テーマによっては、header.php や footer.php に直接スクリプトを記述していることがあります。
zipaddr-jpの前に似た処理を行うJavaScriptが書かれていると、干渉する場合があります。
- テーマフォルダの
header.php/footer.phpを開いて確認 <script>タグでjQueryを手動読み込みしていないかチェック- 不要なスクリプトを削除、または
wp_enqueue_script()に書き換え
5. プラグインの読み込み範囲を制限する
zipaddr-jpはすべてのページで動作する必要はありません。
フォームページのみで読み込むよう制限すれば、他ページでの競合を防げます。
function load_zipaddrjp_only_on_form_page() {
if (is_page('contact')) { // フォームページのスラッグ
wp_enqueue_script('zipaddr-jp');
}
}
add_action('wp_enqueue_scripts', 'load_zipaddrjp_only_on_form_page');
これにより、Contact Form 7を使うページ以外ではzipaddr-jpが読み込まれず、不要なスクリプト競合を減らせます。
6. 代替プラグインの検討も視野に入れる
どうしても他プラグインとの競合が解消できない場合は、
「zipaddr-jp」にこだわらず、他の住所補完プラグインを試すのも選択肢です。
例:
- Yubinbango(軽量&競合しにくい)
- Auto Address for CF7(CF7特化)
これらはzipaddr-jpより動作がシンプルで、最適化系プラグインとの干渉が少ない傾向にあります。
7. 最後の手段:手動でzipaddrスクリプトを読み込む
自動での読み込みがうまくいかない場合、フォームを設置した固定ページやテンプレート内に、以下のようにzipaddrのスクリプトを直書きすることで回避できます。
<script src="https://zipaddr.github.io/zipaddr-jp.js"></script>
これを <footer> 付近に入れると、他スクリプトの読み込み完了後に確実に動作します。
競合しやすい代表的なプラグイン一覧
zipaddr-jpは非常に便利な住所補完プラグインですが、「JavaScriptを圧縮・結合・遅延読み込みする系」や「フォームを拡張する系」との相性が悪い場合があります。
ここでは、実際に競合報告の多いプラグインと、それぞれの注意点を紹介します。
1. Autoptimize(オートオプティマイズ)
特徴:
CSSやJavaScriptを自動的に結合・圧縮し、サイトを高速化する人気プラグイン。
競合の理由:
zipaddr-jpのスクリプトも結合対象になり、
読み込み順が変わることで動作が止まるケースがあります。
対策:
- 「設定 → Autoptimize → JSコードの最適化」をOFF
- もしくは「除外スクリプト」に
zipaddr-jp.jsを追加
2. LiteSpeed Cache(ライトスピードキャッシュ)
特徴:
サーバーキャッシュと連動する高性能キャッシュプラグイン。
JSの遅延読み込みや結合を自動で行う。
競合の理由:
遅延読み込みにより、zipaddrのJSがフォーム描画後に呼ばれず動作しない。
対策:
- 「JS遅延読み込み」をOFF
- 「除外スクリプト」に
zipaddr-jpを追加
3. WP Rocket(ダブリューピーロケット)
特徴:
ページキャッシュやコード圧縮などをワンクリックで行う有料プラグイン。
競合の理由:
zipaddr-jpのスクリプトを「遅延ロード」設定に含めてしまうと、
郵便番号入力時に関数が未定義となり反応しなくなる。
対策:
- 「遅延読み込み対象」から
zipaddr-jpを除外 - 一時的に最適化をOFFにして動作確認
4. Contact Form 7 add-ons(拡張プラグイン)
例:
- CF7 Smart Grid Design Extension
- Contact Form 7 Conditional Fields
- Contact Form 7 Multi-Step Forms
競合の理由:
フォームを分割・非同期化する機能が、
zipaddr-jpの自動入力スクリプトをDOM更新時に初期化してしまう。
対策:
- Ajaxやステップ切り替え時に
zipaddr()を再実行する処理を追加 - 可能であればフォームを単一画面に統一
5. jQuery Updater / Custom jQuery Loader
特徴:
WordPress標準のjQueryを上書きし、最新版を読み込むプラグイン。
競合の理由:
zipaddr-jpは古いjQuery構文($.browserなど)を一部使用しており、
新しいバージョンでは動作しないことがあります。
対策:
- これらのプラグインは無効化する
- WordPress標準のjQueryを使用する
6. Elementor / Divi / Page Builder系
特徴:
ドラッグ&ドロップでページを構築できるビルダー系プラグイン。
競合の理由:
フォームウィジェットやプレビュー機能がJavaScriptを動的に書き換えるため、
zipaddrのスクリプトが再描画後に読み込まれないケースがあります。
対策:
- 実際の公開ページで動作確認(エディター内では反応しないことが多い)
- 必要なら固定ページにショートコードでフォームを埋め込む
7. Asset CleanUp / Perfmatters / Fast Velocity Minify
特徴:
スクリプト読み込みを制御したり、ページごとに無効化したりできる高速化プラグイン。
競合の理由:
フォームページでzipaddr-jpが誤って除外されている。
対策:
- 該当ページで「zipaddr-jp」が有効になっているか確認
- 除外設定から外す
zipaddr-jpと共存するためのコツ
zipaddr-jpは非常に軽量で便利なプラグインですが、「他のプラグインがJavaScriptを最適化・制御する」環境では誤作動しやすい傾向にあります。
競合を防ぐには、
- JS最適化系プラグインでは除外設定を行う
- jQueryを標準バージョンに戻す
- zipaddr-jpを必要ページのみで読み込む
といったちょっとした調整が有効です。
まとめ:競合は「順番」と「最適化」が鍵
zipaddr-jpの競合問題は、
- JavaScriptの読み込み順
- 最適化プラグインの圧縮・結合設定
- jQueryの読み込み方法
の3つを調整することで、ほとんど解決できます。
もし「どれを触っても直らない…」という場合は、キャッシュをすべてクリアしてブラウザを更新してみると、単純なキャッシュ残りが原因のこともあります。




コメント