このmapフィールドは、住所を入力するだけで入力した住所にマ-カ-を立てることができ便利なのですが、csvファイルからの投稿を登録した場合、このmapフィールドに住所情報が入っていかず困っています。
(手入力で登録すれば問題ないのですが)
調べたところ、下記URLに答えが書かれていそうなのですが、ちょっと内容が難しくてわからず困っています。
https://ja.forums.wordpress.org/topic/134082?replies=5
上記URLペ-ジに書かれている事を噛み砕いて解説していただくか、ズバリな解決方法をご提示いただけませんでしょうか。
なにとぞよろしくお願いいたします。
ちなみに上記URLペ-ジの質問者「eiji3」は私です。
こちらの方がズバリだと思います。
カスタマイズ例にあるコードで、44行目の 'field_54899effa7dbe'
を、自分のところのフィールドタイプ:Google Map のフィールドキーに書き換えて、プラグインを有効にして CSV をインポートすれば良いんじゃないかと。
<?php ... $meta['field_54899effa7dbe'] = $gmap_field; // please change the field key to yours
まず、フィルターに指定するフィールドキーです。フィールド名ではありません。
カスタムフィールドで、表示オプションの Show Field Key を「はい」に設定します。
フィールドの項目に「フィールドキー」が表示されます。
「マップ住所」の行に表示されている field_573a04132b7dd
を使います。
もう一点、フィールドタイプが「テキスト」の経度はフィールド名が lon 。
フィールドタイプが「Google Map」の方は、経度は lng です。
この差をフィルターで変換してあげる必要があります。
このふたつの修正を入れると、こうなります。
<?php ... public function convert_gmap($meta, $post, $is_update) { // serialize metadata $gmap_field = array(); if (isset($meta['lat']) && isset($meta['lon'])){ // ★ lon $gmap_field['lat'] = $meta['lat']; $gmap_field['lng'] = $meta['lon']; // ★ lon → lng $gmap_field['address'] = $meta['address']; // unset($meta['lat']); // ★ テキストタイプにも // unset($meta['lng']); // 設定するので、削除しない // unset($meta['address']); } $meta['field_573a04132b7dd'] = $gmap_field; // ★ field_573a04132b7dd return $meta; }
テキストタイプの項目から、Google Map タイプの項目を作るようにしたので、CSV の方は、住所を重複して持つ必要がありません。
なので、CSV は以下のように、末尾から三番目の googlemap を削除したものを使います。
post_title,post_status,post_type,post_category,address,Name,lat,lon 和食たたみ,publish,post,1,東京都世田谷区成城6丁目26-7,和食料理店,35.64398,139.596808
2016年5月18日 09:02 投稿のデータが、実際に取り込んだものになります。
本番のサイトでは、フィールドキーがテスト用サイトと異なっていると思います。
本番のサイトで使うときには、そこを注意してください。
記載URLペ-ジの質問者さんと同じく、CSVファイルのインポ-トは「Really Simple CSV Importer」というプラグインを使っております。
質問文を編集しました。詳細はこちら。