プラグインなしでWordPressの記事データをCSV出力する手法
WordPress記事をCSV形式で出力する際にプラグインを使用しようとしたら、セキュリティの強固なお客様の環境でエラーが発生しました。
そのため、プラグインを使用せずに記事データをCSV形式で出力する方法を検討しました。
テーマファイルを編集できる方なら誰でも可能な方法です。
1. CSV出力用の固定ページを作成する
CSV出力プログラムをキックするために専用の固定ページを作ります。
※簡単なので固定ページにしているだけで、できる人はプラグイン化した方がスマートです。
この固定ページのパーマリンクを 「custom-csv」 とします。
2. CSV出力用固定ページ用のテーマファイルを作成する
使用しているテーマのフォルダ内に「page-custom-csv.php」というファイルを作成します。これでCSV出力用の固定ページを開くとこのファイルが参照されることになります。
そのファイル「page-custom-csv.php」の中に次のコードを書きます。
<?php
if ( ! defined( 'ABSPATH' ) ) exit; //ファイル直接アクセスを防ぐ
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => -1
);
$my_query = new WP_Query( $args );
$csv = null;
if ( $my_query -> have_posts() ):
$csv = 'title,url';
while ( $my_query -> have_posts() ): $my_query -> the_post();
$csv .= get_the_title(). ',';
$csv .= get_permalink(). ',';
$csv .= "\n";
endwhile;
endif;
wp_reset_postdata();
//テーマフォルダの直下にcsvファイルを出力
$fp = fopen(get_theme_file_path().'/post-list.csv','w');
fwrite($fp,$csv);
fclose($fp);
return;
WP_Queryでデータを取得し、それをカンマ区切りでCSVファイルに出力するだけです。ここではタイトルとパーマリンクだけ書き出していますが、必要に応じて追加するだけで記事文章などの出力ももちろん可能です。
3. 固定ページを表示してCSVファイルを書き出す
1.で作成した固定ページを表示します。
画面上は真っ白で空白のページが表示されると思いますが、裏で「page-custom-csv.php」に書かれたソースコードが実行され、テーマフォルダの直下に「post-list.csv」というCSVファイルが出力されます。
まとめ
余分な固定ページを作ってしまうので通常運用には不向きかもしれませんが、そのときだけCSV形式で出力する場合には有用な方法です。
テーマファイルの編集に慣れている方にとっては簡単な操作となります。