ワードプレスドクターの吉田です。今回はワードプレスの投稿一覧で、3日以内に投稿された記事のタイトル前にNEWをつけるTipsを配信いたします
functions.phpを編集してタイトルの表示を変えるフックを追加する
管理画面、外観→テーマの編集より、現在のテーマに含まれるfunctions.phpを選択して編集します。このファイルにフックを追加する事によりタイトルを出力直前に取得して変更してしまうスクリプトを追加していきます。下記のようにfunctions.phpに追記します。
function add_new_to_title( $title, $id ) { if (in_the_loop() && $id == get_the_ID() && !is_single()) { return "NEW ".$title; } return $title; } add_filter('the_title', 'add_new_to_title', 10, 2);
add_filter(‘the_title’, ‘add_new_to_title’, 10, 2); タイトルの表示時に任意のスクリプトを挟み込んで実行するフックを追加する記載です
in_the_loop() && $id == get_the_ID() && !is_single() もし現在の関数がループ内(記事を連続して表示するワードプレスの標準的な関数)にあり、かつ、記事のIDが取得可能で、かつ、単一記事内でない時 = 記事の投稿一覧 の場合にのみNEWをタイトルに追加します
これで、記事一覧内にある全ての記事のタイトルにNEWが付与されるようになりました
記事の投稿日時が3日以内のときだけNEWを追加する
次にこの記事の投稿日時を取得して、現在から3日以内のときだけNEWを付与するように関数を改造していきます
function add_new_to_title( $title, $id ) { if (in_the_loop() && $id == get_the_ID() && !is_single()) { $posttime= get_the_time( 'U' , $id ); $nowtime= time (); if($nowtime-$posttime<604800){ return "NEW ".$title; } } return $title; } add_filter('the_title', 'add_new_to_title', 10, 2);
get_the_time( ‘U’ , $id ); この関数で投稿の日時をUNIX時間(1979年からの経過秒数)で取得できます
time (); この関数で現在時間を取得します
現在時間から投稿の時間を引いた値が3日以内(秒数604800)であれば、return “NEW “.$title; の部分で投稿にNEWを追加します。
これで、3日以内に投稿された全ての記事が、一覧で表示されるときにNEWという文字がタイトルに付与されるようになりました。
多少改造すれば、NEWを画像化したり、文字に色を付けたりする事も可能です。