目次
前段
とある案件で、FAQを100件ほど登録・表示させる機能がほしいというお話を頂いたので、いろいろ調査しました。
WordPressを使用して公開済みのサイトです。
条件
- FAQページを作る(検索機能付き)/li>
- FAQは管理画面でメンテ可
- 100件ほどあるので、インポートしたい(個人的に)
使用プラグイン
- Custom Post Type UI (以下CPT)
- Smart Custom Fields (以下SCF)
- Really Simple CSV Importer ←これは今回追加
作業の流れ
CPTでカスタム投稿タイプ「FAQ」を作成
プラグインは既にインストールされていたので投稿タイプ作成。
CPTでタグ(taxonomy)を作成
まずはCPTでタグの箱を作成。
その後、CPTで作成した投稿タイプメニュー(左側)のサブメニュー内に編集画面が出てくる。
SCFで「FAQ」用のフィールドを作る
※()内はフィールド名(英語)
- Q(question)
- A(answer)
- タグ(tag)
テスト投稿したデータをCSVエクスポートできるか調べた
エクスポートしたCSVのフォーマットでインポートしたらいいと思いましたが、
そんなプラグインは見つかりませんでした。知ってる方いたら教えて下さい。
インポートフォーマットを調べる。
インポートは Really Simple CSV Importer をインストールすると、左メニュー>ツール>インポート に
CSVインポートの機能が出てくる。
ここでUTF-8のCSVをアップロードすれば良い。
Really Simple CSV Importer制作者であるTAKURO HISHIKAWA様のサイト記事に、
「カスタムフィールドの名前の先頭に接頭辞として scf_ を付けてください。」とあったので素直に従ったところ、
QとAは入ったがタグが入らない。。。
・日本語で入れてみる →NG
・スラッグで入れてみる →NG
・IDで1つ入れてみる →OK
・IDで複数カンマ区切りで入れてみる →1つしか入らない
インポートフォーマットはあっているみたい。
本題 独自のタグをインポートする。
前置きが長くなりましたが本題です。
Qiitaにある下記記事の内容そのままでした。
投稿者さんありがとうございます。
当該記事ではチェックボックスでしたが、カスタム方針は全く同じでした。
function.phpに下記を追加。
function really_simple_csv_importer_meta_filter_tag( $meta, $post, $is_update ) {
foreach ($meta as $key => $value) {
if (strpos($value, ',') !== false) {
$_value = preg_split("/,+/", $value);
$meta[$key] = $_value;
}
}
return $meta;
}
add_filter( 'really_simple_csv_importer_save_meta','really_simple_csv_importer_meta_filter_tag', 5, 3 );
これでタグのIDをカンマ区切りで入れてみると、無事インポートできました。
元データはExcelでいただけるようなので、あとは数式でゴニョゴニョすればOKと思われる。