サポート » プラグイン » Really Simple CSV ImporterでACFデータインポート後のラベル出力

  • 解決済 momokichi

    (@momokichi)


    カスタム投稿タイプ news を作成し、
    Advanced Custom Fields にて

    ・news_url(ラベル:リンク先URL)
    ・news_detail(ラベル:ニュース詳細)

    というフィールドを作成しました。
    一方、CSVの方は

    post_id -> (空欄)
    post_name -> (空欄)
    post_author -> admin
    post_date -> (空欄)
    post_type -> news
    post_status -> publish
    post_title -> テストお知らせ
    news_url -> http://yahoo.co.jp
    news_detail -> texttexttext

    という形式で、一件だけインポートしました。

    また、functions.phpには以下のように記載しています。

    function my_really_simple_csv_importer_meta_filter( $meta, $post, $is_update ) {
        $meta_array = array();
        foreach ($meta as $key => $value) {
        	if ($key == 'XXXXXXX') {
        		$meta_array['field_XXXXXXXXXX'] = .........;
        		//データ加工処理。
        	} else {
        		$meta_array[$key] = $value;
        	}
        }
    
        return $meta_array;
    }
    add_filter( 'really_simple_csv_importer_save_meta', 'my_really_simple_csv_importer_meta_filter', 10, 3 );

    インポート自体はうまくいったようなのですが、
    カスタムフィールドのラベル名を取得するために

    $field_data = get_field_object('news_detail');
    $label = esc_html($field_data['label']);
    echo $label;

    としたところ、なにも出力されませんでした。
    var_dump($field_data)を実行したところ、

    “field_news_detail”[“label”] => string(0)””

    となりました。
    そこで、インポートされた記事を、何も変更しないで更新したところ、
    var_dump($field_data)の結果は、
    “field_XXXXXXXXXXXX” [“label”]=> string(21) “ニュース詳細”

    となり、ラベル名が取得できるようになりました。
    現状では、インポートした記事をすべて管理画面から空更新しないとラベルが出力されず
    非常に手間がかかっています。
    どうにか、空更新せずにラベルを反映させたいと考えています。

    どなたかアドバイスをいただければと存じます。
    以上よろしくお願いします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 momokichi

    (@momokichi)

    すみません。解決しました。

    function my_really_simple_csv_importer_meta_filter( $meta, $post, $is_update ) {
        $meta_array = array();
        foreach ($meta as $key => $value) {
        	if ($key == 'XXXXXXX') {
        		$meta_array['field_XXXXXXXXXX'] = .........;
        		//データ加工処理。
        	}
        	elseif($key == 'news_detail') $meta_array['field_XXXXXXXXXX'] = $value;
        	elseif($key == 'news_url') $meta_array['field_XXXXXXXXXX'] = $value;
        	else {
        		$meta_array[$key] = $value;
        	}
        }
    
        return $meta_array;
    }
    add_filter( 'really_simple_csv_importer_save_meta', 'my_really_simple_csv_importer_meta_filter', 10, 3 );

    と、直接フィールドキーを指定することで解決しました。
    他にスムーズなやり方があるのかもしれませんが。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「Really Simple CSV ImporterでACFデータインポート後のラベル出力」には新たに返信することはできません。