web-dev-qa-db-ja.com

場所ベースのコンテンツ

Advanced Custom Fieldsを介して、wp-adminに11種類のドロップダウンを持つ連絡先ポッドを含むページを含むサイトを構築しています。

ユーザーのIPに基づいて、私はそれらの10の連絡先のうちの1つを表示したい(場所が与えられていないか、それがクライアントの「地域」の1つと一致しない場合、11番目がデフォルトです)。

10の地域はすべてアメリカ合衆国の一部に基づいていますが、常に州と一致するわけではありません(たとえば、カリフォルニアは2つの地域に分割され、別の地域にはバージニア、サウスカロライナ、ノースカロライナが含まれます)。これらの地域の外にいる人は誰でも、デフォルト/国際的な連絡先/メッセージを受け取るでしょう。

私はこれを行う方法について私の頭を包むのに苦労しています。私はwp-adminセットアップでAdvanced Custom Fieldsを持っていて、そのプラグインからアイテムを出力するのに慣れています、しかし私は苦労しています:

  1. IPをチェックするためのデータベースとして使用するもの。これを行うための既製品はありますか?
  2. 各地域の私のIPのバケツを作成する方法。
  3. 出力する連絡先/テキストを選択するためのロジックの設定方法。
1
Keefer

freegeoip.net のように、ユーザーのIPアドレスの場所を探すために、地理位置情報サービスを調べることをお勧めします。これを行うには、phpまたはjavascriptのいずれかを使用して残りのAPI要求を取得する必要があります。

訪問ユーザーのIPアドレスを取得するには、あなたが読むことができます

<?php echo $_SERVER['REMOTE_ADDR']; ?>

それからfreegeoip.netで安らかなapiにそれを送ってください。無料のgeoipでは毎日たくさんの検索ができ、json apiからの例として以下の情報が得られます。

{
"ip": "104.37.65.178",
"country_code": "CA",
"country_name": "Canada",
"region_code": "ON",
"region_name": "Ontario",
"city": "Burlington",
"Zip_code": "L7M",
"time_zone": "America/Toronto",
"latitude": 43.4191,
"longitude": -79.8544,
"metro_code": 0

}

ご覧のとおり、推定された場所の緯度と経度、地域、国、都市、推定された郵便番号を取得できます。その情報を入手したら、次に、IP範囲の「バケットリスト」を使用せずに、状態が定義済みの地域と一致するかどうかを確認します。

これが役に立つことを願っています。

1
Ryan Fletcher