Luxeritasで、古い記事にメッセージや警告文を表示する方法(子テーマ)
1年前の記事とか更新する事って少ないですよね。そんなときに「この記事は古いですよー」って一応アナウンスしておきたい。
と思って調べたら、以下の記事にてコードが紹介してありました。
ただこれ、読んでみると「親テーマ」を書き換えてるんですよ。いやいやいや… 便利な子テーマがあるんだし、functions.phpで対応しようぜ?と思い書いたコードが以下になります。
function old_contents( $content ){
if( in_category(array('wordpress', 'technology', 'ソフトウェア')) && date('U') - get_the_time('U') > 60*60*24*365 ) {
$created = get_the_time(get_option('date_format'));
$content = '<div class="old-post-message"><p class="red">この記事は'.$created.'に書かれたものです。ご注意ください。</p></div>'. $content;
}
return $content;
}
add_filter( 'thk_content', 'old_contents', 11, 1 );
コードの解説的な?
まず初めにLuxeritasには投稿記事用のフィルター「thk_content」が追加されているのでこれを活用します。書き方もリンク先にコードが載っていたので、それを拝借… これで大枠は完成。
function old_contents( $content ){
}
add_filter( 'thk_content', 'old_contents', 11, 1 );
つづいて注意文を出す「分岐(if)」を作成します。
if( in_category(array('wordpress', 'technology', 'ソフトウェア')) && date('U') - get_the_time('U') > 60*60*24*365 ) {
}
in_category(array('wordpress', 'technology', 'ソフトウェア'))
はどのカテゴリーで表示させるかを指定(指定したいカテゴリーが複数ある場合はarray()
で配列として記載する必要性があるそうです)。date('U') - get_the_time('U') > 60*60*24*365
はいつより前の時間に対して表示させるかを指定できます。
これらを指定することで「カテゴリーが“wordpress, technology, ソフトウェア” かつ 公開日が“1年以上前” の記事に対して、なにかをする」ことができるようになりました。
さて、分岐ができましたので「なにをする」かを作成します。
$created = get_the_time(get_option('date_format'));
$content = '<div class="old-post-message"><p class="red">この記事は'.$created.'に書かれたものです。ご注意ください。</p></div>'. $content;
$created = get_the_time(get_option('date_format'));
で記事の公開日を取得し、$content = '<div class="old-post-message"><p class="red">この記事は'.$created.'に書かれたものです。ご注意ください。</p></div>'. $content;
で注意文を記載します。
最初の$content =
は“記事のソースを入れる変数”で、最後の. $content;
は“元々の記事のソースが入った変数”です。つまり元々の記事のソースの頭に「注意文」を付与して、それを返すって感じです(語彙力のなさ)。
そしてこのままでは記事が返ってこないので
return $content;
で記事の内容を返します。ifに該当すれば「注意文+記事」、該当しなければ「記事」だけが返ってくる感じです。
add_filter( 'thk_content', 'old_contents', 11, 1 );
の「thk_content」を変更すれば他のテーマでも活用できるかと思います。(the_contentだと固定ページも含まれてしまう気がするので、ifでいまくスルーさせるか他のフィルターを使うか、うまく編集してみて下さいな。私はなにも知りませんので…)
ディスカッション
コメント一覧
まだ、コメントがありません