「記事の投稿日や更新日から一定期間経過している場合にメッセージを表示する」という機能はよく見かけるかと思います。
配布されているWordPressテーマでは標準的に搭載されてることの多い機能ですが、PHPでの動的処理ができないShifterではPHPを利用して現在の時刻を取得する手法で構築されている場合機能しません。
Shifterで動作させるにはJavaScriptをベースで機能を構築する必要があるのですが、そんなプラグインはなかなかないためプラグインを自分で作ってみたので紹介します。
デモ
サイト表示イメージ
ローカル環境で表示したイメージになります。
※現状、このサイトに古い記事がないのでスクリーンショットでご勘弁ください。
管理画面設定項目イメージ
特徴
投稿・固定ページの投稿日もしくは最終更新日から一定期間経過している場合、メッセージを表示させます。
Shifterのようなサーバレス環境での動作を想定しているためJavaScriptを使用してメッセージの表示を制御しています。
インストール
主な使い方や注意点などの詳細は以下のGitHubに公開しているので、そちらも合わせて参考にしてください。
https://github.com/pitolick/JavaScript-Content-Message
GitHubに公開しているソースコードをzip形式でダウンロードし、WordPressの管理画面にアップロードしてください。
使い方
プラグインを有効にすると、設定 > 投稿設定
内に JavaScript-Content-Message
というセクションが追加されます。
適用ページ
メッセージを表示させる投稿タイプを選択します。
選択された投稿タイプをもつページが表示されているとき、出力設定で設定した箇所にメッセージ表示に必要なDOMが挿入されます。
選択項目 | 投稿タイプ | 表示条件 |
---|---|---|
投稿 | post | is_single() |
固定ページ | page | is_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