お問い合わせはコチラから

記事を期間限定公開する時に使えるショートコード

サイト運営

申込みフォームなどを期間限定公開したいときどうするでしょうか?

例えばContact form7とかで期間限定の申し込みフォームを設置して、期限が来たらフォームを表示させないようにしたいという場合がありますよね。また、部分的にではなく、記事やページそのものを非公開にしたいこともあるかもしれません。

この記事では、Wordpressを使用したコンテンツで、期限が来たら非公開にしたい、そんな時の方法についてご紹介します。

記事やページを期間限定で非公開にする

プラグインを使う方法

記事の公開非公開などをあるタイミングで変更するプラグインがあります。プラグインは探せばいろいろ出てきますが、余り需要が無いのか選択肢はあまりないです。

良く紹介されているのが『Post Expirator 』 というプラグインです。

wp-cronを使って動くので、プラグインを導入してもサーバーへの負荷は少ないというのが売りだと思いますが、反面動かないサーバーもあると思います。

プラグイン化されているので、オプションは豊富なのでとりあえずインストールしてみると、やりたいことは出来ると思います。

Post Expirator

Post Expiratorプラグインを使用すると、投稿と固定ページの両方に有効期限を設定できます。 投稿を期限切れにする方法はいくつかあります。

  • 下書き
  • 削除
  • ゴミ箱
  • Private
  • Stick
  • Unstick
  • カテゴリー:置き換え
  • カテゴリー:追加
  • カテゴリー:削除

ショートコードを使う方法

ショートコードを使って記事の公開非公開をあるタイミングで切り替える方法もあります。

カスタムフィールドで日時を指定して表示切替

function my_close_time_filter($content) {
   if (get_post_meta(get_the_ID(), 'close_time', true) != ''
      && date_i18n('Y-m-d H:i:s') > get_post_meta(get_the_ID(), 'close_time', true)) {
      $content = '<p>この記事は表示期限を過ぎました</p>';
   }
   return $content;
}
add_filter('the_content', 'my_close_time_filter');

カスタムフィールドで日時を指定して投稿状態を切り替える

function my_expire_event($pid) {
   if (get_post_meta($pid, 'close_time', true) != ''
      && date_i18n('Y-m-d H:i:s') < get_post_meta($pid, 'close_time', true)) {
      // 設定されていて未来の日付ならスケジュールをセット
      $time_stamp = strtotime(get_post_meta($pid, 'close_time', true) . ' JST');
      wp_schedule_single_event($time_stamp, 'my_new_event', array($pid));
   }
}

add_action('save_post','my_expire_event');

// スケジュールされる動作を記述
function my_update_post($pid) {
   wp_update_post(array( 'ID' => $pid, 'post_status' => 'trash' ) );
}
add_action('my_new_event', 'my_update_post');

記事の一部分を期間限定公開する方法

Post Expiratorはショートコードはありますが、公開期限などを表示するためのもので、 部分的な公開非公開には対応していません。

記事やページの一部分だけ、期間限定公開するためのショートコードがあります。

使い方

ショートコードの引数として term(公開期限の日時)と、after(公開終了後のメッセージ)を指定することができます。

引数など
  • term:必ず指定します。書式はYYYYMMDD0000
  • after:指定しなくても公開終了のメッセージが表示されます。初期値(イベントは終了しました。)
  • 公開する内容もショートコードを指定することができるので、フォームなどのショートコードで表示させている内容に対しても適用できます。

使用例

例1:公開期限 2018年1月1日0:00分(12/31日まで公開)
[display_none term="201801010000" after="公開終了"] 限定公開する内容 [display_none] 

例2:ショートコードをネスト(2019/12/22日まで公開)
[display_none term="201912230000"]
[contact-form-7 id="479" title="タイトル"]
[/display_none]

ソースコード

function dnoneFunc( $atts, $content = null ) {
  //data関数だけだと9時間のズレが生じる場合があるので
  date_default_timezone_set('Asia/Tokyo');
  // 現在時間を取得(年月日時分を取得)
  $now = date('YmdHi');
  // 期間と期間過ぎた後のテキスト(デフォ)を設定
  extract(shortcode_atts(array(
    'term' => '',
    'after' => 'イベントは終了しました。'
  ), $atts));


  if($now < $term){
    // 指定日時過ぎてない(表示する)
 $content = do_shortcode( shortcode_unautop( $content ) );
  }else{
    // 指定した日時過ぎた(表示しない)
    $content = $after;
  }
	return $content;
}
add_shortcode('display_none', 'dnoneFunc');

まとめ

この記事では、記事やページの期間限定公開や、記事やページの一部を限定公開する時に使える情報をまとめました。

特に部分的に公開できるショートコードは、必要に迫られて作ったので、使える場面が結構あると思います。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました