[WordPress] 未来投稿を使ってライブとかイベント予定リストを作る

現在プライベート案件で、とあるジャズトランペット奏者の方のサイトをフルWordPressでリニューアル制作させてもらってます。
で、もちろんライブ予定ページが必要なんですが、固定ページを毎回HTML更新させるわけにもいかん、ということで記事投稿を使って実現する方法をメモします。

要するにこういうのを作りたいわけです。

要件は以下の通りです。

  • 未来投稿がサイトに表示されるようにする
  • 未来の記事だけをピックアップする
  • それを上から日程が近い順に並べる

未来投稿がサイトに表示されるようにする

デフォルトでは投稿日を未来に設定するとタイマーセットになってしまいます。これを普通に記事として表示するにはプラグインを使います。
No Future Post

これをインストールすれば未来の日付の投稿がアーカイブなどで表示されるようになります。
ただしタイマーセット投稿が出来なくなることにご注意ください。

未来投稿だけを昇順で表示する

今回はライブ予定ページに以下のコードを挿入しました。

<?php
function filter_where($where = '') {
$where .= " AND post_date > '" . date('Y-m-d', strtotime('1 days')) . "'";
return $where;
}
add_filter('posts_where', 'filter_where');
query_posts(array(
	'cat' => ※記事カテゴリーID,
	'order' => ASC,
));?>
<?php if (have_posts()) : ?>
<?while (have_posts()): the_post(); ?>
	※ループ中身
<?php endwhile; ?>
<?php else : ?>
	※ライブ予定が無い場合のメッセージ
<?php endif; ?>

6行目までが未来投稿だけを取得する仕組みに該当するようです。

※8月21日追記:
上記だとライブ当日(=投稿日当日)のものが未表示になってしまうので、3行目の「1 days」を「0 days」に変更すると、投稿日が終了すると未表示になるよう変更できます。

7行目以降はよくある使い方で、表示対象カテゴリーの指定と並び順の指定(昇順)をしただけです。
自分の場合はこれでなんとか実現できました。

参考サイト

WordPress › フォーラム » 未来と過去の記事をわけた一覧を表示したい
途中のソースを参照したものに一部改変して使いました。