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: https://ex-tra.jp/kosukekato
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便利ですねー。

ひとり仕事: フリーランスという働き方
(2012-10-5)
売り上げランキング: 14,705
100円
WordPressデザインレシピ集
狩野 祐東
技術評論社
売り上げランキング: 197,569
WordPress 高速化&スマート運用必携ガイド
こもりまさあき 岡本渉
エムディエヌコーポレーション
売り上げランキング: 435,263