とっちゃん@nyanco! です。
今回はWordPress(ワードプレス)で記事のカテゴリーまたはタグに応じて内容が切り替わるコンテンツを設置してみたのでコードの覚書アーカイブというお話です。
本記事ではウィジェットを例としてあげてますが、phpが記述できるところならどこでも使えますにゃ~
例えばヘッダー・フッター、記事の途中でも可能ですにゃ~
ウィジェットの場合は「カスタムHTML」だとphpが記述できないので「テキスト」を利用します。また、ビジュアルモードではなくテキストモードで記述します。
特定のカテゴリーに応じてコンテンツを切り替えるコード
【事前準備】ウィジェットでPHPを使えるようにする
まず、WordPressのデフォルトではウィジェットでPHPは使えないので functions.php に下記コードを追記してPHPを使えるようにしていきます。
//ウィジェットの「テキスト」でphpを使用できるようにする
function widget_text_exec_php( $widget_text ) {
if( strpos( $widget_text, '<' . '?' ) !== false ) {
ob_start();
eval( '?>' . $widget_text );
$widget_text = ob_get_contents();
ob_end_clean();
}
return $widget_text;
}
add_filter( 'widget_text', 'widget_text_exec_php', 99 );
functions.php を触る時はくれぐれもバックアップをとっておきましょう。
カテゴリーが1つの場合
<?php if(in_category('windows') ): ?>
<p>この記事のカテゴリーはスラッグが「windows」です</p>
<?php else: ?>
<p>この記事のカテゴリーはスラッグが「windows」以外です</p>
<?php endif; ?>
1行目でカテゴリーのスラッグ’windows’でカテゴリーを指定していますが、スラッグの代わりにIDでもOKですにゃ~
IDの場合は「’(シングルクォーテーション)」で囲まなくてもOKですにゃ~
カテゴリーが複数の場合
指定したいカテゴリーが複数ある場合は配列で指定できます。
<?php if(in_category(array('windows',10))): ?>
<p>この記事のカテゴリーはスラッグが「windows」またはIDが「10」です</p>
<?php else: ?>
<p>この記事のカテゴリーはスラッグが「windows」またはIDが「10」以外です</p>
<?php endif; ?>
上記サンプルのようにスラッグとIDを混ぜて指定することも可能ですにゃ~
ちなみにORのような処理に見えますが、指定したカテゴリーどちらにも属する場合も2行目の処理となります。
特定のカテゴリーを除外したい場合
in_category関数の冒頭に「!(エクスクラメーションマーク)」をつけると逆に「指定したカテゴリ以外」なります。
<?php if(!in_category('windows') ): ?>
<p>この記事のカテゴリーはスラッグが「windows」以外です</p>
<?php else: ?>
<p>この記事のカテゴリーはスラッグが「windows」です</p>
<?php endif; ?>
else:の処理とテレコになりますにゃ~
特定のタグに応じてコンテンツを切り替えるコード
基本的にカテゴリーのコードの in_category を has_tag に変更すると同様のことができます。
タグが1つの場合
<?php if(has_tag('cryptocurrency') ): ?>
<p>この記事のタグは「cryptocurrency」です</p>
<?php else: ?>
<p>この記事のタグは「cryptocurrency」以外です</p>
<?php endif; ?>
タグの場合でもカテゴリーと同様で、スラッグの代わりにID指定でもOKですにゃ~
タグが複数の場合
<?php if(has_tag(array('cryptocurrency',50))): ?>
<p>この記事のタグはスラッグが「cryptocurrency」またはIDが「50」です</p>
<?php else: ?>
<p>この記事のタグはスラッグが「cryptocurrency」またはIDが「50」以外です</p>
<?php endif; ?>
おわりに
本記事がどなたかの参考になれば幸いです。
今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧
コメント