WordPressで記事を書き続けていると、仕方ないこととはいえ、更新せずにそのままになっている投稿があると思います。ただ日記などでは逆に更新してしまうと当時の出来事でなくなってしまうことからあえて更新はしないという方もいると思います。
「いやいやページのタイトル下に公開日と更新日を表示させているから問題ないでしょ!」と思われる方もいるかも知れませんが、実際にご自身がいろいろな記事を見る時、その部分って確認していますか?してないですよね、きっと。
それ位、特にネット上の情報は見落とされることが多いんです。
まあすべての記事の内容が未来永劫普遍的なものであればそれでも問題はないのでしょうけど、一歩間違うと、今では使えない古い情報を読んで、「このサイト情報は間違ってる」などとサイトそのものの認識を間違われてしまう可能性もありますし、中にはそれをSNSなどで偏向投稿してしまう方もいるかもしれません。
そこで今回は、こうしたトラブルを避けるため、WordPressで制作・管理しているサイトの投稿で、最終更新日から一定期間経過した投稿へアクセスしたときに「古い情報かもしれない」ことを自動で表示させる方法を紹介します。
これによって問題がすべてクリアされるわけではありませんが、より親切なサイトを作るためには必要なことでしょう。
古い記事であることを知らせる表示例
本記事の方法を用いて実装すると、一定期間経過した投稿の本文上へ以下のような表示をさせることができるようになります。
※日付はデータから自動で抽出され、表示されます
本記事を参考にカスタマイズする際に必要なスキル
本記事の内容をご自身のサイトへ実装するには以下の条件およびスキルが必要です
- 子テーマを使って運営しているWordPressサイト
- FTPなどを使ってサーバー内ファイルのアップ/ダウンロードができる方
- 投稿テンプレート(single.php)内の記述や出力の流れをある程度理解できる方
- テーマの追加CSSへデザインコードの追加ができる方
また、ご自身のサイトで使用しているテーマに合わせて調整いただく必要があります。
情報が古いかもしれないことを自動表示するカスタマイズ方法
1.子テーマへ親テーマの投稿テンプレートをコピーする
FTPやサーバーのファイルマネージャーを使って、親テーマの投稿テンプレート(通常はsingle.php)を子テーマ内へコピーします。
2.子テーマの投稿テンプレートへコードを追加する
子テーマへコピーした投稿テンプレートの内容を確認し、投稿本文が出力される
the_content();
というコードの上または、このコードが出力されているフック等の上へ、以下のコードを追加します。
テーマによって、投稿テンプレートの書き方が異なりますのでよくご確認ください
single.php内へ追記するコード
<!-- 古い記事への表示 -->
<?php
$keikanissuu = 365;
if ( date( 'U' ) - get_the_modified_time( 'U' ) > 60 * 60 * 24 * $keikanissuu ) : ?>
<div class="ha-old-moddified"><p class="is-ha-para-notice">本ページの最終更新は<?php echo get_the_modified_date(); ?>です。情報が古い可能性がありますのでご注意ください。</p>
</div>
<?php endif; ?>
追記して保存したら、ひとまず1年以上更新していない古い記事を表示させて思った場所に出力されているか(逆に古くない記事では表示されないか)を確認してください。
コードの解説
冒頭の$keikanissuuという変数で最終更新日からの日数(例では365日=1年分の日数)を指定しています
if…の行で最終更新日からの日数に応じて表示させる/させないの判断をしています
<div…の行で、表示させる場合の内容を指示しています
PHPで構成された投稿テンプレートの場合、コードの前後にPHPの閉じタグ、開始タグを入れる、または、一連のPHP構文として整形しなおす必要があります(この措置を行わないとエラーでページが表示できなくなることがありますのでご注意ください)
3.テーマの追加CSSへデザインコードを追記する
以下のコードをテーマの追加CSSへ追記します
/* 注意 */
.is-style-ha-para-notice:before {
font-family: 'icomoon';
content: "\ea07";
color: #ffc533;
padding-right: 16px;
font-weight: bold;
font-size: 1.2em;
}
.is-style-ha-para-notice {
background: #fff9e6;
padding: 8px;
border: 2px solid #ffc533;
border-radius: 8px;
}
冒頭の注意マークはicomoonというアイコンフォントを使った例ですので、お使いのテーマによっては表示されないかも知れませんから、適宜変更・調整ください
これで、古い記事への案内が最終更新日からの経過日数によって出力されるようになります。
参考にさせていただいたページ:WordPress:古い記事にメッセージを表示させる際の備忘録
テーマのfunctions.phpへ追記して対処する方法もあるけれど・・・
ここまでは、テーマのsingle.php(投稿のテンプレート)へ直接コードを追加して実装する方法を紹介しました。
ここまで読んで「WordPress標準のフックを使って、投稿本文の中へ自動で追加した方がいいのでは?」と思われるかも知れません。
もちろんその方法でも実装は可能ですし、テーマの更新によってsingle.phpへ何等かの変更が加わった場合にも対処は可能となりますから一見便利に見えるのですが、投稿本文の先頭から〇文字をサイト内の説明文やHTML内のdescriptionタグへ出力させるような仕様のテーマの場合には以下のような不都合が発生する可能性があります。
- サイト内の投稿一覧の説明文冒頭に、古い記事であることを知らせる案内文が表示されてしまう
- 検索エンジンの検索結果の説明文冒頭に、古い記事であることを知らせる案内文が表示されてしまう
これは前述したフックを使うことで「本文の一部、冒頭で」と指示しているからで、運営上ちょっと具合が悪いと思いますので、本記事ではsingle.phpへ直接記述する方法を紹介しています。
従って、本記事では混乱を避けるため、あえて具体的なコードの紹介は控えますので、投稿本文先頭へフックを使って何かを挿入する方法については、「WordPress 本文 先頭 定型文」などで検索すればいろいろとヒントが出てきますから、ご自身で調べて実装してください(実装後どのように出力されるのかを必ず確認してください)。
併せて使いたいテクニック(更新日のコントロール方法)
投稿の更新を行うケースでは、以下のような軽微な更新を行う場合もあるでしょう
- 誤字や脱字だけを修正する更新
- アイキャッチ画像や本文内画像の入れ替え
- カテゴリーやタグの紐づけを修正
今回紹介した方法では、WordPressの投稿編集画面で「更新」をクリックした際に自動で情報が変更される最終更新日の情報を参照して、古い投稿であるかどうかを判断させていますから、軽微な更新で更新日が変更されてしまうと都合が悪いこともあるかも知れません。
そこで、以下のリンク先記事の方法で「更新日を更新させるかどうかの設定」を投稿編集画面上で行えるようにすることで、上記の軽微な編集に対して更新日を変更させないようにすることができますから、併用されることをおすすめします。
本記事の更新(変更)履歴
更新日 | 更新内容 |
---|---|
2016年 5月30日 | 記事公開しました |
2017年10月29日 | 一部内容を変更しました |
2021年 8月 7日 | より実際の使用条件に合うよう、「更新日」からの日数で判断させる紹介コードへの変更、注意デザイン要素の追加、本文へのフック使用時の注意点などを追記しました。 |