読者の悩み
- セール情報をつかんだけど、書いてまた書き直すのが面倒
- 期間によって自動で文言が変わるようにしたい
- コピペで簡単にそんな機能を作れますか?
こんな悩みに答える記事になっています。
この記事では、自分の指定した期間によって文言が変化するWordPressのショートコードの作り方を紹介します。
「ショートコードって、何?」と言う人がいるかと思いますが、例えばこのサイトでは
上記のように編集中に書き込むと、以下のようなブログカードに自動で変化します。(ブログカードの作り方の記事です)

こんな感じで、簡単に扱えるような形で、「指定した期間によって内容が変化する機能」をコピペで完成するようにしていますので、ぜひご活用ください。
1.期間によって内容が変わるショートコード
まずは、完成したイメージから紹介。
以下の画像のように打ち込むと、opentimeに指定した期間〜closetimeに指定した期間までの間はopencontent、それ以外の期間ではclosecontentの中身が表示されるようになります。
例えば上記のように書き込めば、2020年8月26日20時15分〜2020年9月1日00時00分(つまり8月26日〜8月末まで)は「セール中」と表示されて、それ以外の期間では「通常」と表示されるようになります。
・・・数字ばっかだけどよく読んだら意味分かると思うから!
また、特定の期間だけ表示したい!という場合でも、以下のようにショートコードを書き換えれば特定の期間以外は何も表示されないので、便利。
maipyon
2.期間によって内容が変わるショートコードの作成方法
作り方は、コピペで終わるので簡単です。
ですが、function.phpにコピペすることになるので最悪サイトが真っ白になります。そこは自己責任でお願いします。(コピペだからなかなか起きないとは思いますが、一応ね。)
//時間指定するコード function datecontent_scode($atts) { $atts = shortcode_atts(array( 'opentime' => null, 'closetime' => null, 'opencontent' => '', 'closecontent' => '', ), $atts); $times = array( 'opentime' => $atts['opentime'], 'closetime' => $atts['closetime'] ); foreach ($times as $key => $val) { //8〜12桁の数字の数字で入力されているか if ( (!preg_match("/^[0-9]{8,12}$/", $val)) || ($val === null) ) { $times[$key] = null; continue; } else { // 正しい日付かどうか $time_year = substr($val, 0, 4); $time_month = substr($val, 4, 2); $time_day = substr($val, 6, 2); if (!checkdate($time_month, $time_day, $time_year )) { $dates[$key] = null; continue; } //正しい時刻かどうか $time_hour = ( substr($val, 8, 2) && preg_match("/(0|1)[0-9]|2[0-3]/", substr($val, 8, 2) )) ? substr($val, 8, 2) : "00"; $time_minutes = ( substr($val, 10, 2) && preg_match("/[0-5][0-9]/", substr($val, 10, 2) )) ? substr($val, 10, 2) : "00"; //Unixのタイムスタンプに $times[$key] = mktime($time_hour, $time_minutes, 0, $time_month, $time_day, $time_year); } } $now = date_i18n('U'); if ( ($times['opentime'] === null) && ($times['closetime'] === null)) { return $atts['opencontent']; } elseif ($times["closetime"] === null) { if ($now >= $times["opentime"]) { return $atts['opencontent']; } } elseif ($times['opentime'] === null) { if ($now < $times['closetime']) { return $atts['opencontent']; } } else { if ( ($now >= $times['opentime']) && ($now < $times['closetime']) ) { return $atts['opencontent']; } } //どの条件にも当てはまらないのなら、closecontentを返す return $atts['closecontent']; } add_shortcode("datecontent", "datecontent_scode");
これをfunctions.phpの一番下に追加した後に、冒頭で紹介したショートコードを打ち込んでプレビューを見ればうまく機能すると思います。
分単位で調節できるので、確認も簡単にできるはず。
3.期間によって内容を変えるのは、便利な使い方が色々あります
例えば、ただの文字を変化させるのではなくて、ショートコードをaタグで挟んであげればボタンの文言を一定期間変更することも可能です。
ボタンに「今なら〇%OFFで買えます!急げ!」みたいに書かれていたら、クリックしたくなりますよね。
文言はお任せしますが、「限定」にはみんな弱いです。
セールがあるたびに書き換えるのが面倒だな・・・と私も思っていたのですが、この方法なら確実に嘘情報を載せることにはならないですし、強烈に読者を引きつけることができる「今なら」という文言も使えそうです。
maipyon
4.キャンペーン中には引き付ける文章に変えてみよう!
ショートコードの追加方法・使い方もかなり簡単だと思いますので、是非試してみてください。
物販ではなくて、特にASPの商品・サービスを紹介するときにはキャンペーンも多いのでよく使えそうです。
maipyon
こんな私と同じ状況の人はぜひ有効活用してみてください。
ちなみに、ASPってなんぞや?
ASPなんて登録せんでも・・・と思っている方は、以下のリンクから絶対登録すべきASPを要チェックです!

実は愛用している商品が取り扱われてた・・・なんてことが無いように、くそ面倒だけど色々なところに登録するのがオススメ。
自分が登録しているところだけを厳選して紹介してます。