期間限定で応募フォームを作成した時の備忘録。
ACFの設定
表示形式は日本人に馴染みのある形式に変更
Y年F月j日 → 2024年5月6日
戻り値はY-m-d H:i:sを選択する
カスタム投稿に紐付け&テスト記事を作成
一覧ページには応募期間中のもののみ表示させたい
archive.php
<?php
$today = esc_html(current_time('Y-m-d H:i:s'));
$args = [
'post_type' => 'product', // 投稿タイプのスラッグ(通常投稿は'post')
'posts_per_page' => 6, // 表示件数
'meta_query' => [
'relation' => 'AND', // 両方の条件を満たす必要がある
[
'key' => 'application_start', // ACFで取得する公開開始日
'value' => $today,
'compare' => '<=', // 公開開始日は今日以前
],
[
'key' => 'application_end', // ACFで取得する公開終了日
'value' => $today,
'compare' => '>=', // 公開終了日は今日以降
],
]
];
$the_query = new WP_Query($args);
if ($the_query->have_posts()) :
while ($the_query->have_posts()) : $the_query->the_post();
?>
<!-- 投稿アイテムの表示 -->
<?php endwhile;
else : ?>
<p>まだ記事がありません</p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
詳細ページは公開期間中の表示と、開始前、終了後の表示を出し分ける
single.php
<?php
$today = esc_html(current_time('Y-m-d H:i:s'));
$startDate = get_field('application_start'); // 公開開始日を取得
$endDate = get_field('application_end'); // 公開終了日を取得
if ($today < $startDate) : // 現在の日付が公開開始日より前
?>
<!-- 公開前の表示 -->
こちらの応募は<?php echo $startDate; ?>から受付開始です。
<?php elseif ($today >= $startDate && $today <= $endDate) : // 現在の日付が公開開始日と公開終了日の間
?>
<!-- 公開期間中の表示 -->
<?php else : // 現在の日付が公開終了日より後
?>
<!-- 公開期間終了後の表示 -->
こちらの応募は締め切りました。
<?php endif; ?>
プラグインを用いた方法もあるけど、
ACFでも意外と簡単に実装できました….!!!