【WordPress】指定期間に投稿された記事一覧をCSV出力する実装
下記のように記述したテンプレートファイルを作りましょう。
<?php
require_once '../../../wp-load.php';
/* CSV出力 */
if($_POST):
header("Content-Type: application/octet-stream");
header("Content-disposition: attachment; filename=download.csv");
$begin = str_replace('-', '/', $_POST['begin-date']);
$end = str_replace('-', '/', $_POST['end-date']);
$csv = "日付,タイトル,ページURL,サムネイルURL\n";
/* クエリ設定 */
$ajax_query = new WP_Query(
array(
'post_type' => 'post', // 投稿タイプ
'date_query' => array(
array(
'inclusive' => true,
'after' => $begin // 集計開始
),
array(
'inclusive' => true,
'before' => $end // 集計終了
)
),
'posts_per_page' => -1 // 全件表示
)
);
/* 記事表示 */
if ( $ajax_query->have_posts() ) :
while ( $ajax_query->have_posts() ) :
$ajax_query->the_post();
$thumbnail = get_the_post_thumbnail_url( get_the_ID(), 'full' );
$url = get_permalink();
$title = get_the_title();
$date = get_the_date('Y.m.d');
$csv .= $date . "," . $title . ",". $url . "," . $thumbnail . "\n";
endwhile;
echo mb_convert_encoding($csv, "SJIS", "UTF-8"); // CSV出力
endif;
wp_reset_postdata();
endif;
?>
<?php if(!$_POST): ?>
<html>
<head></head>
<body>
<h1>投稿記事集計</h1>
<form action="" method="post">
<p>
<input type="date" name="begin-date" value="集計開始日">
~
<input type="date" name="end-date" value="集計終了日">
</p>
<p>
<input type="submit" value="ダウンロード">
</p>
</form>
<?php endif; ?>
投稿者プロフィール
- 代表者
-
東海大学工学部を卒業後、東芝情報システム株式会社(旧グループ会社含む)に入社。半導体(SRAM)の開発チームにて、Unix環境でのPerlを用いた業務自動化プログラムの開発など、エンジニアとしての確かな基礎と緻密な論理的思考力を培う。
その後、東証上場企業である株式会社ザッパラスへ。Web・モバイルの最前線で、数多くのユーザーに愛されるコンテンツ制作業務に従事。ここで「ユーザー目線に立った魅力的なWebコンテンツの企画・制作ノウハウ」を深く学ぶ。
開発・システム側から見た「堅牢なロジック」と、制作・ユーザー側から見た「伝わるコンテンツ」の双方を実務で経験した強みを活かし、フリーランスとして独立。
現在は、ウイングアーク1st株式会社の「データのじかん」運営チームに参画するなど、大手・中小企業のWeb運営・開発パートナーとして活動。完全在宅でありながら、固定IPの完備や厳格なセキュリティポリシーの遵守を徹底し、企業のインフラや本番環境を安全に支える「チームの一員」として高い信頼を得ています。
見た目の美しさはもちろんのこと、内部の構造やWordPressのカスタマイズ、運用・セキュリティまでを見据えた、技術的バックボーンのある高品質なWebサイト・システム制作をワンストップでご提供しています。




