テンプレートの一部分の公開を予約する
「新しい特設ページヘのリンクバナーを○月○日の0時になったらトップページに表示してほしい」という要望があった場合、0時まで待機して手動で掲載するのはとても大変です。こういった時、公開を予約しておいて指定した日時に自動で公開できればとても便利です。
このような要望に対応するには、必要なテンプレート(home.phpなど)に下記のように記載します。
1 2 3 4 |
<?php if ( current_time('Y/m/d H:i:s') >= '2016/06/01 00:00:00' ) { ?> この部分に公開を予約したい内容を記載します。 <a href="http://example.com">リンク</a>などを記載してください。 <?php } ?> |
※上記の例は、2016/06/01の0時ちょうどに内容が公開される形になります。他の日時に変更したい場合は「2016/06/01 00:00:00」の部分を別の日時に変えてください。(形式が同じYYYY/MM/DD HH:MM:SSの形式でないとうまく動作しません)
予約投稿と連携する
WordPressの予約投稿の機能を活用すると、下記のようにもできます。
1 2 3 4 5 6 |
<?php $p = get_posts("name=連携したい投稿のスラッグ"); if ( count($p) > 0 && 'publish' == $p[0]->post_status ) { ?> この部分に公開を予約したい内容を記載します。 <a href="http://example.com">リンク</a>などを記載してください。 <?php } ?> |
連携する投稿が公開された時にあわせて公開されるので、連携する投稿の公開日時に必要な日時を設定してください。「やっぱり0時じゃなくて9時にしたい」となったときも投稿画面の公開日時を変更するだけで対応ができます。
ログインしている人は公開前も確認できるようにしたい
「予約はしたいけどログインしている人は公開前でも確認できるようにしたい」という場合は、上記の代わりに下記のようにします。
1 2 3 4 |
<?php if ( current_time('Y/m/d H:i:s') >= '2016/06/01 00:00:00' || is_user_logged_in() ) { ?> この部分に公開を予約したい内容を記載します。 <a href="http://example.com">リンク</a>などを記載してください。 <?php } ?> |
||
の部分が「または」、is_user_logged_in()
の部分が「ログインしている人」という意味です。全体では、「2016/06/01の0時ちょうど以降、「または」「ログインしている人」であれば」という意味になります。
注意
WordPressの設定 > タイムゾーンが「東京」になっていない場合は日本時間と時間がずれます。また、サーバーの時刻設定によってもずれる場合があります。