【WordPress】最終更新日から一定期間経過した記事の任意の場所へメッセージを表示する方法

公開日: 更新日: Wordpress
Knowledge Base Wordpress パソコン カスタマイズ 設定




時事情報を配信するサイトやこのサイトのようにWordpressの使い方などを紹介する記事の多いサイトの場合、情報の鮮度によっては今にそぐわない内容であったり、動作しないコードであったりすることがあります。

そうなったらその記事は削除するというのが一番親切ではあるのですが、せっかく時間をかけて書いた記事を削除することはもったいない話ですし、結構過去記事が検索経由で閲覧されることも多いですから制作者としても本当にもったいない話だと思います。

が、やはり古い情報をそのままにしておくことで、訪問してくれた方に不親切ですし、何より訪問された方から「役に立たなかった」などと勝手な印象を持たれたり、ひどい場合にはSNSなどで誹謗中傷をされるなど思わぬところで被害が出ることもありますから気を付けたいところ。

今回は記事の最終更新日から指定した期間を過ぎると自動で本文内へ「この記事は凄く昔のものですよ!」とメッセージを表示することができる方法を紹介します。

と言っても普遍的な内容の記事にこのメッセージをわざわざ表示することで、本当は正しい情報なのに間違って「古いですよ!」と伝えてしまうケースも存在するでしょうから、ちょっと工夫して、ショートコードを挿入しておくことで古い記事でメッセージを出す必要がある記事にのみ表示させることができるようにしました。

この方法を使って表示させる内容は↓の画像のようになります
【WordPress】最終更新日から一定期間経過した記事の任意の場所へメッセージを表示する方法

※今回紹介する方法はオリジナルテーマを作成するにあたり、投稿や固定ページ本文の任意の場所へ新着記事一覧をショートコードで挿入できるようにした仕組みの応用です。

大きな仕組みというか流れとしては

  1. テーマフォルダ内に部品(必要な機能を持つテンプレート)を作る
  2. ショートコードを本文内へ挿入することでテンプレートを動作させた状態で表示する

というものです。ご存知の通り、WordpressではPHPコードを本文内へ書いて実行することができません。これはコメント欄へ任意のPHPコードを書いて実行されてしまうのを防ぐためのセキュリティ機能ですので、何等かのプラグインを使ってPHPが実行できるようにするのはとても危険ですから、今回のようにショートコード化して実行する必要があるのです。

この仕組みは何かを指定してショートコードで挿入する系のプラグインでは必須の流れですから覚えておいて損はないと思いますよ。

最終更新日から一定期間経過した記事の任意の場所へメッセージを表示する方法

ショートコードでテーマファイルのテンプレートを実行する仕組みを作る

テーマのfunctions.php末尾へ以下のコードを追加します。

//ショートコードを使ったphpファイルの呼び出し
function my_php_Include($params = array()) {
 extract(shortcode_atts(array('file' => 'default'), $params));
 ob_start();
 include(STYLESHEETPATH . "/$file.php");
 return ob_get_clean();
}
add_shortcode('myphp', 'my_php_Include');
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

※functions.phpの編集に失敗するとWordpressのバージョンによってはエラーメッセージが出たり、画面が真っ白になったりすることがありますので、バックアップなどを取りつつ作業してください。

このコードを追加することで

[myphp file=’ファイル名’]
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

というショートコードを本文内へ挿入すると、そのテンプレートが呼び出され、動作した状態で表示されるようになります。
※「ファイル名」の部分はテンプレートファイル名を入れてください

メッセージを表示するためのテンプレートを作り、テーマフォルダ内へアップロードする

次にメッセージを表示させるためのコードを作り、「modday-alert.php」というファイルを作ります

コピペされる場合は以下のコードをそのままテキストエディタなどに貼り付けてください。

<?php if ( date('U') – get_the_modified_time('U') > 60*60*24*180 ) { ?>
<div class="old-post-alert">
	<p>この記事は<time class="entry-date date" datetime="<?php echo get_the_date( 'Y-m-d' ); ?>"><?php echo get_the_date(); ?></time>に公開され、<time class="update date" datetime="<?php echo get_the_date( 'Y-m-d' ); ?>"><?php the_modified_date(); ?></time>に最終更新されたもので、内容が古い可能性がありますのでご注意ください。</p>
</div>
  <?php }?>
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

貼り付けたら「modday-alert.php」というファイル名+拡張子名で保存してください
※この際文字コードを「UTF-8 BOMなし」にしないと動作しないので注意してください
参考記事:

上のコードをそのまま使って表示されるメッセージは以下のようになります(枠線や背景などのデザインは後述するCSSで指定する必要があります)。

【WordPress】最終更新日から一定期間経過した記事の任意の場所へメッセージを表示する方法

ファイルをFTPクライアントなどを使ってテーマフォルダ内へアップロードします。
FTPが使えない環境の方は以下の方法もありだと思います

(ただし不具合が出た場合にはサーバーのファイルマネージャーやFTPを使った修復が必要になりますので、あくまでもFTPなどが使えるけど面倒だから管理画面から操作した人向けの方法です)

※デザインを↑の画像と同じようにするには以下のCSSコードをテーマのCSS末尾へ追記してください

/****** 古い記事のお知らせ ******/
.old-post-alert {
    background-color: #feffd9;
    border: 1px solid #ffdc00;
    border-radius: 8px;
    padding: 10px;
    margin-bottom: 20px;
}
.old-post-alert p {
    margin-bottom: 0px;
}
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

メッセージを表示したい場所へショートコードを挿入する

前項でも説明しましたが、任意の場所へショートコードを挿入することで実行結果が表示されます。

今回の場合は「modday-alert」という最終更新から一定期間経過したらメッセージを出すというテンプレートを作りましたので、

[myphp file=’modday-alert’]
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

というショートコードを挿入します。

投稿テンプレート(single.php)で使うときは

もちろん投稿用のテンプレート(single.php)へあらかじめ挿入しておき、時期が過ぎたら自動で表示させるようにすることもできます。

single.phpを開き、表示させたい場所へ以下のコードを挿入するだけです

<?php get_template_part('modday-alert');?>
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

また、せっかくなのでショートコードのままで挿入したいという方は

<!–古い記事に対する案内–>
<?php echo do_shortcode(“[myphp file='modday-alert']“); ?>
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. 上のようなことがないのに更新できない
  6. 特に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。

コードを転載する場合には

ご自身のサイトで当ページのコードを転載される場合には必ず当ページへのリンクを入れていただきますようお願いいたします

を挿入しても同じ結果が得られます。


どうでしたか??できるだけ簡単に説明したつもりですが、初心者の方にはわかりにくい内容だったかも知れません。順番に落ち着いて設置していけば難しいことではありませんからぜひチャレンジしてみてください。

冒頭で書いたようにこの仕組みを使えば他のテンプレート(新着記事の一覧など)も表示できるようになりますので覚えておいて損はないと思います。

ちなみに2列の新着記事をショートコードで任意の場所へ表示させる方法は

で紹介していますので併せてご覧ください。

いつでもご相談・サイトカスタマイズの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】