CSVをインポートした後に、追加のCSVを上書きしたいと思うことがあります。
1つや2つなら手作業でも可能ですが、数百や数千となると無理です。
そこでWordpressにCSVをインポートする際に使った「WordPressで簡単に大量の記事・データをインポートする方法」CSV Importerプラグインを改良して上書きできる様にします。
目次
CSV Importerの上書き結果
WordPressバージョン3.9.1
CSV Importerプラグインバージョン 0.3.8で検証しました。
うまく上書き出来ました。
上書きは上手くできるのですが注意点が何点かあります。
CSV Importerのコード修正
こんな感じで修正しました。
[php]
//2014年05月19日 修正 222行目
foreach ($csv->connect() as $csv_data) {
if ($post_id = $this->create_post($csv_data, $options)) {
$imported++;
$comments += $this->add_comments($post_id, $csv_data);
unset($csv_data[‘update’]);//updateのセルがカスタムフィールドとして作成されないように削除
$this->create_custom_fields($post_id, $csv_data);
} else {
$skipped++;
}
}
/* 元コード
foreach ($csv->connect() as $csv_data) {
if ($post_id = $this->create_post($csv_data, $options)) {
$imported++;
$comments += $this->add_comments($post_id, $csv_data);
$this->create_custom_fields($post_id, $csv_data);
} else {
$skipped++;
}
}
*/
[/php]
このほかにもあと2ヶ所修正しました。
詳しくはダウンロードファイルをご確認下さい。
CSV Importerの注意点
まずCSVファイルに update と言う項目が必要になります。
上書きファイルをアップデートする際には update の項目に 「true」を入れます。
あとは、アップデート(追加)用のCSVファイルをアップロードするだけでOKです。
面倒だと思ってはじめ(1回目の新規インポート)から全部に update > true を入れてアップロードすると全てスキップされます。
1件も登録されませんので注意が必要です。
逆に、面倒だと思ってアップデート用のCSVファイルに update > true を入れないと全て新規インポートになり2重登録されます。
まずインポートした同じデータがあるのが大前提です。そのデータに追加・変更すると言うことです。
- 新規ファイルには update > true を入れないこと
- アップデートファイル には update > true を入れること
- インポートした同じデータがあるのが大前提
これを守れば快適に動作しました。
ダウンロード
ダウンロードしてプラグインに上書きして下さい。
FTP接続>/wp-content/plugins/csv-importer/csv_importer.php へ上書きアップロードでOKです。
CSVインポート用の仕様書も作成して入れておきましたのでご利用下さい。
まとめ
手を抜いたらダメ。
WP Ultimate CSV Importerもあるけど、どちらも一長一短。
ちなみに WP Ultimate CSV Importer バージョン 3.5.3 も試しましたが上書きインポートは出来ません。
ただタイトルや本文で重複チェックが可能なので、データインポート後に新規と旧データが混ざったCSVファイルをアップロードする際は重複登録・新規登録を簡単にしてくれます。
参考サイト
参考にさせていただいたサイトをご紹介します。
http://www.wp-mynote.com/2013/03/csv-importer.html
参考どころか、このコードのままです。ありがとう御座いました。
参照先は wordpress3.5.1 CSV Importer0.3.7 の環境ですが、わたしは WordPressバージョン3.9.1 CSV Importerプラグインバージョン 0.3.8で検証しても正常に動作しております。