19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【WordPress】Really Simple CSV ImporterでACFのチェックボックスの値を読み込む

Last updated at Posted at 2016-03-15

Really Simple CSV Importerは、CSVファイルをインポートして一括で投稿を登録できる便利なプラグインですが、ACFでチェックボックスを使用していると上手く読み込むことでできません。
というのも、ACFのチェックボックスはDBに保存される値がa:1:{i:0;s:0:"";}のような値になってしまうためです。

例えば、ACFで以下のようにチェックボックスを設定しているとします。

  • red:赤
  • blue:青
  • green:緑

上記の選択肢から赤と青を選択した場合、DBに保存される値はa:1:{i:0;s:0:"red";i:1;s:1:"blue";}のような値になってしまいます。
CSVファイルに「red,blue」とカンマ区切りで指定すればいけそうですが、DBに保存されている値がおかしいため、これでは上手く読み込まれません。

「red,blue」ではなく「a:1:{i:0;s:0:"red";i:1;s:1:"blue";}」と指定すれば上手く読み込まれますが、こんなことはいちいちやってられないです。そこで、Really Simple CSV Importerのフィルターフック「really_simple_csv_importer_save_meta」を使ってACFの値をパースしてあげます。

functions.php
function rsci_meta_filter( $meta, $post, $is_update ) {
  foreach ($meta as $key => $value) {
    // checkeboxフィールドの場合
    if($key == 'checkebox_field_key') {
      // $valueが空の場合、データに a:1:{i:0;s:0:"";} という空データが入ってしまうため
      // 空ではない場合にパースする
      if ($value != "") {
        $meta[$key] = preg_split("/,+/", $value);
      } else {
        $meta_array[$key] = "";
      }
  }
  return $meta;
}
add_filter( 'really_simple_csv_importer_save_meta', 'rsci_meta_filter', 10, 3 );

このようにすることで、チェックボックスの値もちゃんと読み込む事ができます。

参考

19
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?