ミギムキ

[WordPress] Really Simple CSV ImporterでSmart Custom Fieldの繰り返し項目をインポートする

Really Simple CSV Importerは、たくさんの投稿データを取り込む際にとても便利なプラグインです。
記事の内容やタクソノミー、カスタムフィールドなどまとめてCSVからインポートできます。

少し特殊なケースとして、Smart Custom Fieldで作成した繰り返し項目のカスタムフィールドをインポートさせたい場合があります。

Really Simple CSV Importerではフィルターフックが用意されており、CSVから取得したデータを加工してインポートすることで、繰り返し項目のフィールドも一括で処理することができます。

サンプル構成

下記のように設定したカスタムフィールドを例にします。

繰り返し項目のグループ内に「repeat_text」という名前をつけたテキストフィールドを用意しています。

CSVファイルの書き方

"post_type","post_status","post_title","scf_repeat_text" "product","publish","テスト投稿 ","テキスト1 ,テキスト2 ,テキスト3 "

読み込ませるCSVファイルの例です。

繰り返し項目である「repeat_text」は、カラム名(項目名)の頭に「scf_」をつけて「scf_repeat_text」という名前にしています。
これはReally Simple CSV Importerで指定されている読み込みルールとなり、この「scf_」がついていないとCSVファイルをうまく読み込むことができません。ご注意ください。

「scf_repeat_text」のデータは「"テキスト1 ,テキスト2 ,テキスト3 "」という形で、「,」区切りでデータを入力しています。これが3回分のデータとなります。

「繰返し項目のデータはカンマ区切りでCSVに記載する」ということがポイントになります。

functions.phpに関数を追加する

function rsci_save_meta_filter($meta, $post, $is_update) { foreach($meta as $key => $value) { if(strpos($value, ',') !== false) { $array_value = preg_split("/,+/", $value); $meta[$key] = $array_value; } } return $meta; } add_filter('really_simple_csv_importer_save_meta', 'rsci_save_meta_filter', 10, 3);

functions.phpに上記コードを記載します。

この「rsci_save_meta_filter」関数をReally Simple CSV Importer側で提供されているフィルターフック「really_simple_csv_importer_save_meta」に登録することで、CSVインポート時のカスタムフィールドの内容を編集することができます。

関数の引数「$meta」にはCSVに記載したカスタムフィールドのデータが配列形式で格納されています。
これをforeachループで回して中身を一つずつ取り出して処理します。
データにカンマ(,)が含まれている場合に、「preg_split」関数を使ってカンマで区切った配列データに変換します。
この配列データを元の$metaに格納し直すことで、繰り返し項目として扱われるようになります。

CSV上でカンマ区切りにしていたデータを配列にまとめて入れ直しをしている、というイメージです。

CSVをインポートする

あとはCSVファイルをインポートするだけです。
うまくいけば下記のように繰り返し項目が個別で登録されます。

ご質問など受け付けています

記事の中でわかりにくかったところ、もっと知りたかったこと、間違っていることなど、何でもお気軽にご連絡ください。

ご連絡は下記フォームを利用いただくか、ツイッターアカウント@flat8migi宛てでもOKです。