【WordPress】記事のカテゴリー・タグに応じて内容を変更する方法

本ブログはアフィリエイト広告を利用しています

WEB / アプリ
WEB / アプリ
この記事は約5分で読めます。

とっちゃん@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_categoryhas_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; ?>

おわりに

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント