カスタムフィールド「event_date」を元にテキストボックスで期間を指定し該当する記事を表示する。これがいいのかどうかわからないけど、とりあえず動作したし、いろいろ調べたのでとりあえずメモっておくことにします。
<form method="POST" action="">
<input type="text" value="<?php echo attribute_escape($start_date); ?>" name="start_date" id="start_date" /><span>~</span>
<input type="text" value="<?php echo attribute_escape($end_date); ?>" name="end_date" id="end_date" />
<input type="submit" value="検索" name="btn">
</form>
<?php
if (isset($_POST["btn"])) {
if (!empty($_REQUEST['start_date'])) {
$start_date = date('Y-m-d', strtotime($_REQUEST['start_date']));
}
if (!empty($_REQUEST['end_date'])) {
$end_date = date('Y-m-d', strtotime($_REQUEST['end_date']));
}
if(!empty($start_date) && !empty($end_date)) {
$args = array(
'post_type' => 'seminar',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'event_date',
'value' => array( $start_date, $end_date ),
'type' => 'date',
'compare' => 'BETWEEN'
)
),
'meta_key' => 'event_date', // 開催日
'orderby' => 'meta_value',
'order' => 'DESC'//,
);
} else {
$not_input_msg ='入力漏れ';
}
$query = new WP_Query( $args );
}//btn
?>
<p><?php echo $not_input_msg; ?></p>
<table>
<tr>
<th>開催日</th>
<th>イベント名</th>
</tr>
<?php if(!empty($start_date) && !empty($end_date)) : ?>
<?php while ( $query ->have_posts() ) : $query ->the_post(); ?>
<tr><td><?php print($post ->event_date); ?></td><td><a href="<?php echo $getURL = the_permalink(); ?>"><?php print($post ->post_title); ?></a></td></tr>
<?php endwhile; ?>
<?php endif; wp_reset_query(); ?>
</table>