1463417211 Wordpressの投稿に、アドバンスカスタムフィ-ルドの中の「mapフィールド」を追加しています。

このmapフィールドは、住所を入力するだけで入力した住所にマ-カ-を立てることができ便利なのですが、csvファイルからの投稿を登録した場合、このmapフィールドに住所情報が入っていかず困っています。
(手入力で登録すれば問題ないのですが)
調べたところ、下記URLに答えが書かれていそうなのですが、ちょっと内容が難しくてわからず困っています。
https://ja.forums.wordpress.org/topic/134082?replies=5

上記URLペ-ジに書かれている事を噛み砕いて解説していただくか、ズバリな解決方法をご提示いただけませんでしょうか。
なにとぞよろしくお願いいたします。
ちなみに上記URLペ-ジの質問者「eiji3」は私です。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2016/05/17 01:46:51
  • 終了:2016/05/18 14:12:48
id:ykhpno1

記載URLペ-ジの質問者さんと同じく、CSVファイルのインポ-トは「Really Simple CSV Importer」というプラグインを使っております。

ベストアンサー

id:a-kuma3 No.1

a-kuma3回答回数4412ベストアンサー獲得回数18032016/05/17 09:41:12

ポイント1000pt

こちらの方がズバリだと思います。

カスタマイズ例にあるコードで、44行目の 'field_54899effa7dbe' を、自分のところのフィールドタイプ:Google Map のフィールドキーに書き換えて、プラグインを有効にして CSV をインポートすれば良いんじゃないかと。

<?php
    ...
        $meta['field_54899effa7dbe'] = $gmap_field; // please change the field key to yours



追記です。

以下を修正しました。

  • Really Simple CSV Importer のフィルターを修正
    • フィールドキーを修正
    • CSV の経度が lng ではなく lon になので、その対応
  • CSV から重複している住所を削除

まず、フィルターに指定するフィールドキーです。フィールド名ではありません。
カスタムフィールドで、表示オプションの 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 投稿のデータが、実際に取り込んだものになります。


本番のサイトでは、フィールドキーがテスト用サイトと異なっていると思います。
本番のサイトで使うときには、そこを注意してください。

他9件のコメントを見る
id:ykhpno1

なるほど、ありがとうございます。
csvファイルからの入力は色んな問題をはらんでますね。
私も自分なりに色々と調べようとするのですが、有益な情報に辿り着くことができず助かりました。
別の方へされた回答のペ-ジの内容も素晴らしいですね。参考にさせていただきます。
また、ライセンスのことについても勉強になりました、ありがとうございます。
ポイント送信の反映に時間がかかったらごめんなさい。
いつもありがとうございます!

2016/05/21 17:20:56
id:a-kuma3

ポイント届きました。
ありがたく頂戴いたします m(_ _)m

2016/05/23 13:15:23

その他の回答(0件)

id:ykhpno1

質問文を編集しました。詳細はこちら

id:a-kuma3 No.1

a-kuma3回答回数4412ベストアンサー獲得回数18032016/05/17 09:41:12ここでベストアンサー

ポイント1000pt

こちらの方がズバリだと思います。

カスタマイズ例にあるコードで、44行目の 'field_54899effa7dbe' を、自分のところのフィールドタイプ:Google Map のフィールドキーに書き換えて、プラグインを有効にして CSV をインポートすれば良いんじゃないかと。

<?php
    ...
        $meta['field_54899effa7dbe'] = $gmap_field; // please change the field key to yours



追記です。

以下を修正しました。

  • Really Simple CSV Importer のフィルターを修正
    • フィールドキーを修正
    • CSV の経度が lng ではなく lon になので、その対応
  • CSV から重複している住所を削除

まず、フィルターに指定するフィールドキーです。フィールド名ではありません。
カスタムフィールドで、表示オプションの 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 投稿のデータが、実際に取り込んだものになります。


本番のサイトでは、フィールドキーがテスト用サイトと異なっていると思います。
本番のサイトで使うときには、そこを注意してください。

他9件のコメントを見る
id:ykhpno1

なるほど、ありがとうございます。
csvファイルからの入力は色んな問題をはらんでますね。
私も自分なりに色々と調べようとするのですが、有益な情報に辿り着くことができず助かりました。
別の方へされた回答のペ-ジの内容も素晴らしいですね。参考にさせていただきます。
また、ライセンスのことについても勉強になりました、ありがとうございます。
ポイント送信の反映に時間がかかったらごめんなさい。
いつもありがとうございます!

2016/05/21 17:20:56
id:a-kuma3

ポイント届きました。
ありがたく頂戴いたします m(_ _)m

2016/05/23 13:15:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません