海外向けShopifyストアでは、地域ごとにサポート手段が異なる場合があります。テーマのJavaScriptで https://my.ipin.io/info を呼び出し、適切なサポート入口を表示できます。
APIの説明
ブラウザ側呼び出しは訪問者IPを確認し、訪問者のIP、国、地域、都市を返します。地域別表示に適しています。
{"ip":"185.220.236.7","country":"TW","region":"Taiwan","city":"Taipei"}
利用シーン
これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
- これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
- Shopifyで訪問者IP別のサポート入口を表示する方法
- APIの説明
- SEOとUXの推奨事項
実装ロジック
実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
- 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
- ブラウザ側呼び出しは訪問者IPを確認し、訪問者のIP、国、地域、都市を返します。地域別表示に適しています。
- 以下の例はすべて
https://my.ipin.io/infoを直接使用し、コメントと画面文言も現地語化しています。 - デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
コード例
以下の例はすべて https://my.ipin.io/info を直接使用し、コメントと画面文言も現地語化しています。
theme.liquid
<a class="ipin-support-btn" href="/support">Support</a>
<script>
document.addEventListener("DOMContentLoaded", async function () {
const buttons = document.querySelectorAll(".ipin-support-btn");
const map = { TW: "/support/tw", US: "/support/us", JP: "/support/jp" };
try {
// ブラウザ側から /info を呼び出し、訪問者IPを判定します。
const info = await fetch("https://my.ipin.io/info").then(res => res.json());
buttons.forEach(btn => btn.href = map[info.country] || "/support");
} catch (e) {
// APIリクエスト失敗時はデフォルト値を保持します。
buttons.forEach(btn => btn.href = "/support");
}
});
</script>
SEOとUXの推奨事項
デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
よくあるミス
以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。
- 以下の問題は、記事の正確性、コードの実用性、API説明の信頼性に影響します。
- デフォルト内容は完全で読みやすく保ち、地域別内容は拡張として扱います。検索エンジンは安定した内容を取得でき、API失敗時もページは利用できます。
- 実装前にリクエスト元を確認します。サーバーリクエストはサーバーIP、ブラウザリクエストは訪問者IPを返します。
- これらの利用シーンはIP情報インターフェースの価値を示し、サーバーIPと訪問者IPを明確に区別します。
まとめ
ブラウザ側呼び出しは訪問者IPを確認し、訪問者のIP、国、地域、都市を返します。地域別表示に適しています。
よくある質問
以下の質問はこの記事専用に整理しており、実装内容と直接関係しています。
質問:なぜShopifyのサポート入口に適していますか?
回答:ShopifyテーマのJavaScriptは訪問者ブラウザで実行されるため、訪問者地域に応じたサポート入口を表示できます。
質問:なぜボタンにclassを使うのですか?
回答:Shopifyページには複数のサポートボタンがある場合があり、classならまとめて更新できます。
質問:LINEやWhatsAppを国別に出し分けられますか?
回答:はい。国コードごとにテキストとURLをマッピングすれば実装できます。
質問:APIが失敗した場合はどうなりますか?
回答:デフォルトのサポートリンクを残すため、ユーザーは引き続き問い合わせできます。
質問:Shopifyではどこにコードを置くべきですか?
回答:theme.liquidの