こんな方に読んでほしい
[記事の内容]

公開日やキャンペーン開始時間に合わせて、WordPressの表示内容を自動で切り替えたい場面は多くあります。
本記事ではPHPの条件分岐を使い、手動更新なしで表示を変更する方法を解説します。
まずは実際によくある利用シーンを見てみましょう。
今回は、前回と「日時切替」の応用編になります。前回の記事を合わせて、ご確認ください。
公開日時に合わせて表示内容を自動で切り替えたい方へ

まずは日時を取得し、比較できる状態を作ります。ここが全てのベースになります。
date_default_timezone_set('Asia/Tokyo');
$now = new DateTime()<!-- 2026-01-10+09:00 表示 -->
https://example.com/?time=2026-01-01+09:00
<!-- 2026-01-10+09:00 切り替え内容が表示-->
https://example.com/?time=2026-01-10+09:00

まずはシンプルな「公開前 → 公開後」の2パターン切替です。
?time=2026-01-01+09:00の日時で表示し、/?time=2026-01-10+09:00になったら、内容が切り替わるコードになります。
<?php
date_default_timezone_set('Asia/Tokyo');
if (isset($_GET['time'])) {
$now = new DateTime(str_replace('+', ' ', $_GET['time']));
} else {
$now = new DateTime();
}
$limit1 = new DateTime('2026-01-01 09:00');
$limit2 = new DateTime('2026-01-10 09:00');
?>
<?php if ($now >= $limit2): ?>
<!-- 1/10以降 -->
<?php elseif ($now >= $limit1): ?>
<!-- 1/1 -->
<?php endif; ?>limit1に、2026-01-01 09:00に設定します。
limit2に、2026-01-10 09:00に設定します。新しい日時条件を先に書くようにしてください。

キャンペーンなど、では「段階公開」がよくあります。ここでは3パターンの切替を行います。
① → ② → ③の順に段階的に切り替えていきます。
<?php
date_default_timezone_set('Asia/Tokyo');
if (isset($_GET['time'])) {
$now = new DateTime(str_replace('+', ' ', $_GET['time']));
} else {
$now = new DateTime();
}
$cutoff1 = new DateTime('2026-01-01 09:00');
$cutoff2 = new DateTime('2026-01-10 09:00');
?>
<?php if ($now < $cutoff1): ?>
<!-- ① 1/1 9:00 未満 -->
<?php elseif ($now < $cutoff2): ?>
<!-- ② 1/1 9:00 ~ 1/10 9:00 -->
<?php else: ?>
<!-- ③ 1/10 9:00 以降 -->
<?php endif; ?>ifを複数記述すると、それぞれの条件が独立して評価されるため、条件によっては同じ要素が同時に表示されてしまいます。
実務ではこの挙動が原因で表示崩れが起きやすいため、elseifを使用して「1つの条件のみ実行」されるようにしています。
公開切替はミスすると大きな事故につながります。
こちらも、URLパラメータで公開前テストを必ず行なってください。
WordPressは投稿予約だけでなく、PHP条件分岐を使うことで柔軟な公開制御が可能になります。
今回の方法を覚えると、キャンペーン更新作業を自動化できます。
2026.03.01
2026.02.26
2025.10.17
2025.10.17
2025.10.15
2025.08.16
2023.06.15
2022.06.30
2020.03.22
2020.03.06

© 2025 shu-naka-blog