アドバンストカスタムフィールドの複数選択チェックボックスの値をCSVインポートする

サイトの移行や記事に新しい属性を追加するときに、「カスタムフィールドを含む記事レコードの一括インポート」をする方法について、以前紹介したことがあります。
その紹介記事の中では、内容を単純にするために、カスタムフィールドのタイプは「テキスト」一種類として紹介しましたが、今回はカスタムフィールドのタイプに「複数選択ありのチェックボックス」が含まれるケースについて、以前の紹介記事の追加情報としてご紹介したいと思います。
したがって、事前に「カスタムフィールドを含む記事レコードの一括インポート」を読んだうえで今回の事例をご覧ください。使うプラグインや条件なども同じなので、今回は説明を省略します。
 
複数選択がある場合のCSV上の値としてはカンマ区切りが一般的で、カテゴリやタクソノミーについてはこのカンマ区切りの値がCSVインポートでも有効です。
例)”category01,category02,category03″
しかしながら、カスタムフィールドではこのカンマ区切りが使えません(カンマも値の一部と認識されてしまいます)。
そこで、カンマを値の区切りの記号として認識させ、その前後を別の値としてインポートできるようなちょっとした細工が必要です。その細工をテーマの function.php に追記するのが一番最初の作業になります。
あらかじめそのチェックボックス型のカスタムフィールドのField Keysを用意してください。
用意できたら「Really Simple CSV Importer」の really_simple_csv_importer_save_meta のフィルターフックを記述します。

functions.php

function really_simple_csv_importer_checkbox( $meta, $post, $is_update )
{
  foreach ($meta as $key => $value) {
    if ($key == 'field_XXXXXXX') { //field_XXXXXXXには対象のカスタムフィールドのField Keysを入れる
      if ($value != "") {
        $meta[$key] = preg_split("/,+/", $value);
      } else {
        $meta_array[$key] = "";
      }
    }
    return $meta;
  }
}
add_filter( 'really_simple_csv_importer_save_meta', 'really_simple_csv_importer_checkbox', 10, 3 );

これで完了です。
 
あとは対象のカスタムフィールドの値のところを、カンマ区切りで入れればOKです。
当然ですが、カンマ区切りがCSV上の値の区切りと間違われないように、” ” で囲うことを忘れずに。
(最新のエクセルからCSV出力すれば自動で値を ” ” で囲ってくれます)