条件タグを使わずにカテゴリー別に表示

Sponsored Link

WordPressの条件タグを使用せずに、カテゴリー別に表示する方法。

条件タグを使用すると、分かりにくくなるのと、
カテゴリー毎に表示を変えたい場合、1つ1つ指定しないといけないので、
長くなってしまう。

Sponsored Link

条件タグを使用した場合

WordPressテンプレートタグを使用する場合、条件タグを使って以下のように記述する。

<?php if(is_category("3")){ ?>
        <p>カテゴリーID、3の時表示</p>
<?php }elseif(is_category("10")){ ?>
        <p>カテゴリーID、10の時表示</p>
<?php }else{} ?>

テンプレートタグ使った場合こんな感じ。
デフォルトのテーマはこういう書き方をしていたような。
(ざっと書いたので間違ってたらすいません…)

PHP構文、switch文を使う方法

テンプレートタグを使わずにPHPで記述する方法です。
正確には、テンプレートタグを使うけれど、よりPHPの書き方に近い方法です。

テンプレートタグに格納してある情報を抜き出し、
変数を作って、格納する。

変数とswitch文を利用して、出力させるというもの。

ここでは、親カテゴリーIDを$catIDという変数を作成して格納。
switch()の()に$catIDを入れて、

caseの後に表示させたいカテゴリーIDを記述し、
echoで内容を出力する。

<?php
	$cat = get_the_category();
	$catObj = $cat&#91;0&#93;;
	$catId = $catObj->category_parent;
?>
<?php switch($catId){
	case 3:
		echo "カテゴリーID、3の時に表示します。";
		break;
	case 10:
		echo "カテゴリーID、10の時に表示します。";
		break;
	}
?>

ここで、echo””;の中では、すでにの中にあるので、
が使えない。

その場合、文字列演算子「.」ピリオドを使用し文字列をつなげる。
また、を取った形にする。

注意したいのは、テンプレートタグ自体がechoに寄って出力されるものがある。
その場合、PHPの値として返すテンプレートタグを使用する。

×→echo"<img src='".bloginfo('template_url')."/images/画像ファイル名.jpg'/>";
○→echo"<img src='".get_bloginfo('template_url')."/images/画像ファイル名.jpg'/>";

なぜ同じようなテンプレートタグがあるのか疑問で、紛らわしいなと思っていたのですが、こういう事だったのですね。

テンプレートタグには、一般的に普通に出力するものの他に隠れたものがあるのですねぇ。

奥が深いですね。

PHPを織り交ぜたテーマカスタイマイズ、これからも色々してみたいです。

Sponsored Link