【WordPress】一定期間経過した記事にメッセージを表示させるプラグイン

【WordPress】一定期間経過した記事にメッセージを表示させるプラグイン

「記事の投稿日や更新日から一定期間経過している場合にメッセージを表示する」という機能はよく見かけるかと思います。

配布されているWordPressテーマでは標準的に搭載されてることの多い機能ですが、PHPでの動的処理ができないShifterではPHPを利用して現在の時刻を取得する手法で構築されている場合機能しません。

Shifterで動作させるにはJavaScriptをベースで機能を構築する必要があるのですが、そんなプラグインはなかなかないためプラグインを自分で作ってみたので紹介します。

デモ

サイト表示イメージ

ローカル環境で表示したイメージになります。
※現状、このサイトに古い記事がないのでスクリーンショットでご勘弁ください。

サイト表示イメージ

管理画面設定項目イメージ

管理画面設定項目イメージ

特徴

投稿・固定ページの投稿日もしくは最終更新日から一定期間経過している場合、メッセージを表示させます。

Shifterのようなサーバレス環境での動作を想定しているためJavaScriptを使用してメッセージの表示を制御しています。

インストール

主な使い方や注意点などの詳細は以下のGitHubに公開しているので、そちらも合わせて参考にしてください。

https://github.com/pitolick/JavaScript-Content-Message

GitHubに公開しているソースコードをzip形式でダウンロードし、WordPressの管理画面にアップロードしてください。

使い方

プラグインを有効にすると、設定 > 投稿設定 内に JavaScript-Content-Message というセクションが追加されます。

適用ページ

メッセージを表示させる投稿タイプを選択します。
選択された投稿タイプをもつページが表示されているとき、出力設定で設定した箇所にメッセージ表示に必要なDOMが挿入されます。

選択項目投稿タイプ表示条件
投稿postis_single()
固定ページpageis_page()

デフォルトでは投稿・固定ページ両方に出力されます。

比較基準日

基準日の設定

表示されている記事の投稿日もしくは最終更新日のどちらを基準日にするかを設定します。

選択項目日付取得関数
投稿日get_the_date('Y/m/d')
最終更新日get_the_modified_date('Y/m/d')

デフォルトでは投稿日が基準日として設定されます。

基準日からの経過時間の設定

基準日からどれだけ経過した場合にメッセージを表示するか設定します。
デフォルトでは1年以上経過した場合にメッセージを表示します。

表示メッセージ

表示させたいメッセージを設定します。
HTMLを使用した場合、そのまま出力されるように構築されているため、自由なDOM構造を作成することができます。

また、以下の特殊文字をメッセージ中に埋め込むことで正規表現を使用し、対応した文字に置換を行います。

特殊文字説明
%year%基準日と現在の年差
%monthnum%基準日と現在の月差
(1ヶ月あたり30日で計算のため多少ブレあり)
%day%基準日と現在の日差
%post_date%記事の投稿日
%modified_date%記事の最終更新日

%post_date% %modified_date% で使用する日付フォーマットをカスタマイズする」にチェックを入れると、その隣にあるテキストボックスに入力された日付フォーマットに沿って %post_date% %modified_date% が表示されます。
チェックが入っていないときは 設定 > 一般設定 > 日付のフォーマット 項目で設定された日付フォーマットで表示されます。

CSS設定

表示されるメッセージに適用するCSSを設定します。

オリジナルCSSを使う を選択すると、CSSを記述するためのフィールドが表示されます。
表示されるメッセージは 表示メッセージ で設定する内容とは関係なく <div id="jcm_content_message"> にラップされた状態のDOMを出力するので、 #jcm_content_message をセレクタとすることでCSSを適用することができます。

オリジナルCSSを記述したあとで プラグイン付属のCSSを使う を選択しても記述された内容は保存されています。

出力設定

メッセージの表示方法を設定します。

項目説明
本文の前the_content() の直前にメッセージを連結して表示
本文の後the_content() の直後にメッセージを連結して表示
自動出力せずテンプレートタグを使用するテンプレートタグを echo した箇所に表示

※デフォルトでは「本文の前」を設定している状態と同じ表示状態になります。

テンプレートタグ

jcm_add_content_temp() の関数を使用することでメッセージを取得することができます。
指定した箇所に出力したい場合は、echo などを使用して出力を行ってください。
※プラグインのため、function_exists() を利用して関数が定義されているのを確認することを忘れないでください。

サンプルテンプレートタグ

<?php if(function_exists('jcm_add_content_temp')){echo jcm_add_content_temp();} ?>

まとめ

ブログユースでShifterを使用したいときに、「一定期間経過している場合メッセージを表示」という機能が通常のテーマではサポートできない(はず)なので、結構使い所のあるものを作れたかなと思います。

参考記事

このプラグインを作成するのにあたって同じような機能をプラグイン化していたものがあったのですがこちらは配布を終了しているようです。
設定項目の決め方など、とても参考にさせていただきました。

WordPressで投稿の公開日や最終更新日と現在の日付を比較して古い記事にメッセージを表示するプラグイン「WP Posts Date Alert」を作りました

https://webcake.stars.ne.jp/wp-posts-date-alert.html

関連記事