こんにちわ段田です。
ここ最近はジョジョや段田商会のことを書いていたので、
今回は久しぶりにWordPressの記事を書きたいと思います。
WordPressサイト制作時にお客様から「記事をCSVで一括登録したい」という要望があり、その時に使ったプラグインを紹介したいと思います。
CSVの登録でまず思いつくのが、CSV Importerプラグインです。こちらのプラグインはカテゴリ、カスタムフィールドの登録もできて便利です。
普通に使うのには困らないのですが、ある条件でデータを加工したい場合にフィルターが用意されていなかったりで、記事の更新はプラグインをいじらないといけなかったりします。また、2年更新されていないため、今後の更新も望めない状況です。
何か素敵なプラグインはないかとGoogleをさまよっていたら、素敵なプラグイン見つけました。
その名は・・・「Really Simple CSV Importer」!
このプラグインの素晴らしい点
- フィルターが用意されていて、記事情報、タクソノミー情報、カスタムフィールド情報に対して独自のデータ加工が設定できる。
- Advanced Custom Fieldsプラグインで作成したカスタムフィールドの指定ができる。
- 記事の更新ができる
- ワムウッ!
あ、最後のワムウッ!は無視して下さい。
あまりに素晴らしいプラグインだったため、ワムウッ!と書いてしまっただけです。
Really Simple CSV Importerの導入方法
ではさっそく、ご説明していきます。
インストール
- プラグインをダウンロードします
- ダウンロードしたらファイルを解凍し、pluginフォルダに設置する。
- 管理画面のプラグインページから『Really Simple CSV Importer』を有効化にする。
インストールはこれで完了です。簡単ですね!
こちらで説明が記載されていました。
CSVのインポート手順
1.左ナビの「ツール」の「インポート」をクリックします。
2.右画面の「CSV」をクリックして、登録画面に移動します。
3.登録に使うCSVを選択
4.ボタンをクリックしてインポートが始まります。
おしまい!これだけです。
非常にシンプルな操作になります。また、登録画面ではサンプルのCSVを取得できるので、こちらを参考にすると良いかと思います。
CSVファイルのフォーマットについて
登録に使うCSVですが、文字コードは「UTF-8」でのみ利用が可能です。他の文字コードだと文字化けになる可能性大です。なので、文字コードがShift JISのExcelで利用する場合は、文字コードをUTF-8に変更しておく必要があります。
1行目はヘッダー行になり、2行目以降に登録したいデータを書いて下さい。ヘッダー行では登録・更新したい項目名を指定します。
内容は下記をドキュメントを元にまとめましたので、ご参照ください。
項目名 | 説明 |
ID or post_id | 編集したい記事IDを指定。指定しない場合は新規登録扱い。 |
post_author | 編集者情報を指定。ユーザーID、ユーザー名のいずれかを指定 |
post_date | 公開日を指定。 |
post_content | 記事内容を指定。 |
post_title | 記事タイトルを指定。 |
post_excerpt | 抜粋を指定。 |
post_status | 記事のステータスを指定。指定していない場合はdraftになる。 |
post_name | 記事のスラッグを指定。 |
post_parent | 親記事を指定。固定ページなどで使用ですな。 |
menu_order | 記事の順序を指定。 |
post_type | 投稿タイプを指定。 |
post_thumbnail | アイキャッチ画像を指定。URLかファイルパスを指定。 |
post_category | カテゴリスラッグを指定。 |
post_tags | タグ名を指定。 |
{custom_field} | カスタムフィールドを指定。カスタムフィールドのキー名を指定すればOK。 |
tax_{taxonomy} | カスタムタクソノミーを指定。tax_を接頭にしてカスタムタクソノミー名を指定すればOK。 |
フィルターについて
先ほどこのプラグインにフィルターが用意されていると書きましたが、3つのフィルターがあります。ドキュメントに記載のあったサンプルと一緒に紹介します。CSVを単純にインポートするのではなく、データを操作したい場合に活用しましょう。
記事の情報をゴニョゴニョできるreally_simple_csv_importer_save_post
function really_simple_csv_importer_save_post_filter( $post, $is_update ) {
// remove specific tag from import data
if (isset($post['post_tags'])) {
$_tags = array();
foreach ($post['post_tags'] as $tag) {
if ($tag != 'Apple') {
$_tags[] = $tag;
}
}
$post['post_tags'] = $_tags;
}
return $post;
}
add_filter( 'really_simple_csv_importer_save_post', 'really_simple_csv_importer_save_post_filter', 10, 2 );
カスタムフィールドをゴニョゴニョできるreally_simple_csv_importer_save_meta
function really_simple_csv_importer_save_meta_filter( $meta, $post, $is_update ) {
// serialize metadata
$meta_array = array();
if (isset($meta['meta_key_1'])) $meta_array[] = $meta['meta_key_1'];
if (isset($meta['meta_key_2'])) $meta_array[] = $meta['meta_key_2'];
$meta = array( 'meta_key' => $meta_array );
return $meta;
}
add_filter( 'really_simple_csv_importer_save_meta', 'really_simple_csv_importer_save_meta_filter', 10, 3 );
カスタムタクソノミーをゴニョゴニョできるreally_simple_csv_importer_save_tax
function really_simple_csv_importer_save_tax_filter( $tax, $post, $is_update ) {
// Fix misspelled taxonomy
if (isset($tax['actors'])) {
$_actors = array();
foreach ($tax['actors'] as $actor) {
if ($actor == 'Johnny Dep') {
$actor = 'Johnny Depp';
}
$_actors[] = $actor;
}
$tax['actors'] = $_actors;
}
return $tax;
}
add_filter( 'really_simple_csv_importer_save_tax', 'really_simple_csv_importer_save_tax_filter', 10, 3 );
これで柔軟な対応ができますな!
まとめ
紹介は以上になります。個人的にフィルターが用意されているのが良かったです。
今後、一括登録が必要なときはReally Simple CSV Importerプラグインで決まりですな!
ではでは~。
LIGでは、エンジニアを絶賛募集中!
https://liginc.co.jp/recruit/mid_career
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。