2012/6/5

WordPressのコンテンツをCSVでエクスポートできるようにしておく、比較的簡単な手段

基本的にサイト全体のエクスポートはWordPressに頑張らせれば良いのですが、例えば、定型化した記事コンテンツを定期的にCSVで出力してダウンロードしたい、とか言う場合。そういうプラグインもありそうですが、一番手っ取り早いなあと思ったのは、自分でプラグインにしちゃうというやり方。

/*
Plugin Name: ET Exporter
Plugin URI: https://ex-tra.jp
Description: export posts.
Version: 1
Author: Experience Transporters
Author URI: http://kkpdo.sakura.ne.jp/kosukekato/wp
License: GPL2
*/

とりあえずこんな感じでプラグイン情報を書いておかないと、WordPressではプラグイン有効化できないようになっています。んで、まずは先に管理画面からアクセスする方法を作ってしまおう。

add_action('admin_menu', 'my_plugin_menu');

function my_plugin_menu() {
  add_options_page('記事エクスポート', 'ET Exporter', 8, __FILE__, 'my_plugin_options');
}

で、本当はここからきちんと作るんですけど、まあCSV吐ければ良いので、最低限で。

function my_plugin_options() {

if (have_posts()) : while (have_posts()) : the_post();
$id = get_the_id();
$data .= ',';
$data .= get_the_title();
$data .= get_post_meta($id, 'meta', TRUE);
$data .= ',';
$data .=  'rn ';
endwhile;
endif;

$csv_data =  ' ';

でエクセルで開いた時に文字化けしないように、文字コード変換しておいてあげると良いです。

$csv_data = mb_convert_encoding($data, 'SJIS ',  'UTF-8 ');

あとはCSVに吐き出すだけですね。

$csv_file =  'export.csv ';
$fp = fopen($csv_file, 'ab');
flock($fp, LOCK_EX);
ftruncate($fp, 0);
fwrite($fp, $csv_data);
fclose($fp);

あとはプラグインの設定画面に最低限必要な情報を出しておいてと。

echo '<p>CSVデータが作成されました</p>';
echo '<p><a href= 'export.csv'>こちらからダウンロードして下さい</a></p>';

まあただ、これcsvファイル外から参照できてしまうので、セキュリティはなんか考えてください。

WordPress便利ですねー。

加藤 康祐 / 企画・設計

プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。

加藤康祐企画設計

是非、フォローしてください!
Twitter / Instagram

(2012-10-5)
売り上げランキング: 14,705
100円