[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です。