Really Simple CSV Importerで、カンマが入ったテキストをそのまま取り込みたい

投稿を一括で取り込みできるCSVは、セルをカンマ区切りで認識してます。なのでセルの中にカンマを含んだ文字列があると、誤ってデータが区切られてしまいデータがズレてしまったりします。
僕が直面したのは、Advanced Custom Fieldでテキストフィールドにて、文章中に金額を入力したく1,000円と入力しました。同じCSV内で、ACFのチェックボックスを使用しており、データをカンマ区切りで入力する必要があったのですが、別個で使っているときは問題なかったのですが、チェックボックスなどカンマを使うフィールドを使用すると、全てのフィールドにあるカンマの位置で分割されてしまいました。取り込みにはReally Simple CSV Importerを使ってます。
そうなると列がズレてしまうので、インポートしたデータがおかしなことになってしまうというわけです。

ダブルクォーテーション(“)で囲んでエスケープしてカンマを読み込ませる方法があるようですが、編集作業をお客様が行う場合が多く、手間が増えてしまうのでこの方法はなし。(試してないのでできるのか知りません)
フィルターフックを使って全てのセルの中にあるカンマを置き換えるという記事もありましたが、カンマはそのまま使用したいのでなし。
同じくフィルターフックを使って全てのセルからカンマを無視して取り込ませるというものもありましたが、チェックボックスなどでカンマを使いたい項目が混在するときに使うことができません。

なので、フィルターフックで一部のフィールドに入力するデータのみ、セル内にあるカンマを無視して、その他はカンマを認識するようなコードを作りました。

コードと導入方法
あとがき

コードと導入方法

ひとまずコードをば。他のサイトでも使うことが多いのでプラグインとして扱ってます。functions.phpに書き込んでも動くんじゃないですかね。試してないですけど。

単純にif文でそのまま取り込むデータと、カンマで区切るデータをACFのフィールド名で指定して分けているだけです。
Really Simple CSV Importerの製作者様の記事(http://notnil-creative.com/blog/archives/3465)にあったコメントだか、プラグインのフォーラムだかに載っていたコードを参考に作成した気がしますが失念しました。何をどれくらい参考にしたかも覚えていませんが全く違う内容だった気がします。

上記のコードをプラグインのフォルダ(/wp-content/plugins/~)にアップロードし、管理画面からこのプラグインを有効化すると使用できます。
動かなかったらどこかしら変更してみてください。。実際に僕が使用した環境はWP5.7系、RSCI1.3です。

あとがき

Really Simple CSV Importerを使って、Advanced Custom Fieldのテキストフィールドとチェックボックを使った際に、カンマを正しく区切って取り込ませる方法を紹介しました。
あんまり需要がないのか、カンマを区切って使うことがないのか、たくさん検索してもやり方が出てこなかったものなので、同じことで困っている方の助けになれば幸いであります。

余談ですが、自室でMavic minを飛ばして遊んでいたら部屋のホコリがすごい量飛びまわりまして、悲しい気持ちになりました。お掃除ロボットだったんですかね。

written by
Nobuyuki Shibuki

Nobuyuki Shibuki

-

Videographer