不動産サイトを作成している中で、2万件に近い物件データを登録することになり、
各物件の所在地を示すGoogleマップをカスタムフィールドで表示したく、『ACF』と『Really Simple CSV Importer』を活用してCSVにて住所を一括でインポートしてみました。
実際に各住所情報がカスタムフィールドに入力された状態にはなりましたが、
マップカスタムフィールドの『入力窓に入力はされたけどもエンターが押されていない状態』になってしまいます。
なので、マップを記事に表示反映させるためには管理画面の記事編集画面から、住所が入力された入力窓の箇所を見に行き、
ひとつひとつをエンターを押して読み込ませたあと、更新ボタンを押さなければいけなくて、何か良い方法がないか探し回りましたが見当たらず、困り果ててしまいました。
実現したいこととしては、
『Really Simple CSV Importer』を使って住所情報をCSVインポート後、上記作業をすることなくGoogleマップが記事で表示される状態にしたいです。
カスタムフィールドのGoogleマップに住所情報をインポートするための設定コードは下記を使わせていただいております。
//CSVインポートでGoogleマップを表示する設定 define("GOOGLE_MAP_KEY", "GoogleマップのAPIキー"); add_action('acf/init', function() { acf_update_setting('google_api_key', GOOGLE_MAP_KEY); }); add_filter("really_simple_csv_importer_save_meta", function($meta, $post, $is_update) { if (isset($meta["ACFのフィールド名"])) { $url = sprintf("https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s", urlencode($meta["ACFのフィールド名"]), GOOGLE_MAP_KEY); $context = stream_context_create([ 'http' => ['ignore_errors' => true] ]); $response = file_get_contents($url, false, $context); $pos = strpos($http_response_header[0], '200'); if ($pos === false) { //緯度経度が取得できなかった場合は登録しない; return $meta; } $jsonData = json_decode($response, true); $lat = $jsonData["results"][0]["geometry"]["location"]["lat"]; $lng = $jsonData["results"][0]["geometry"]["location"]["lng"]; $meta["ACFのフィールド名"] = [ "address" => $meta["ACFのフィールド名"], "lat" => $lat, "lng" => $lng ]; } return $meta; }, 10, 3);
念の為『ACFのフィールド名』の箇所を『ACFのフィールドキー』に変更してみても解決できずでした。
現在の仕様環境、バージョンなど↓
Wordpress:5.9.2
php:7.4.25
▼使っているプラグイン
・Advanced Custom Fields
・Really Simple CSV Importer
・Classic Editor
・Search & Filter
・WP All Export
解決できる方法がございましたらご教示いただけると助かります。
どうかよろしくお願いいたします。
あなたの回答
tips
プレビュー