【WordPress】Advanced Custom Fieldsで設定したGoogleマップ情報をReally Simple CSV Importerを使って一括登録する方法

【WordPress】Advanced Custom Fieldsで設定したGoogleマップ情報をReally Simple CSV Importerを使って一括登録する方法です。

フィールド名は「住所」として、functions.phpに以下のサンプルコードを追記してください。

Googleマップキーを取得して設定しないと動作しないのでご注意ください。

<?php

define("GOOGLE_MAP_KEY", "****************************************");

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["住所"])) {
        $url = sprintf("https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s", urlencode($meta["住所"]), 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["住所"] = [
            "address" => $meta["住所"],
            "lat" => $lat,
            "lng" => $lng
        ];
    }

    return $meta;
}, 10, 3);

あとはインポートするCSVファイルに「住所」項目を追加してあげればOKです。

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください