コンディショナルタグの書き方

例えばトップページとカテゴリーページでサイドバーの表示を変えたい場合など、コンディショナルタグで振り分けることが出来る。

トップページのみ「AAA」を表示する、なら

<?php if (is_home()): ?>AAA<?php endif; ?>

と書く。

トップページのみ「AAA」を表示、それ以外は「BBB」を表示、なら

<?php if (is_home()): ?>AAA<?php else: ?>BBB<?php endif; ?>

トップページは「AAA」、カテゴリー3で「BBB」を表示、なら

<?php if (is_home()): ?>AAA<?php elseif (is_category('3')): ?>BBB<?php endif; ?>

トップページは「AAA」カテゴリー3と7で「BBB」を表示、なら

<?php if (is_home()): ?>AAA<?php elseif (is_category('3') || is_category('7')): ?>BBB<?php endif; ?>

*複数の条件を付ける場合、上のように書くとエラーになることがあります。その場合は、1つずつ書いてください。

条件付け部分の書き方についてはhttp://wpdocs.sourceforge.jp/Conditional_Tagsを参照。

*カテゴリーページでカテゴリーを条件付けする場合は is_category 、シングルページでカテゴリーを条件付けする場合は in_category と書く。IDでなくスラッグで指定しておくとサイトを引っ越しした際なども書き換えなくて良い。is_single(array(‘xxx’, ‘aaa, ‘bbb’)) のように書くことも出来る。

親カテゴリーの内容・記述を子カテゴリーにも適用したい時、functions.php に下記を追加

function in_category_family( $parent ) {
    if ( empty($parent) )
        return false;

    if ( in_category($parent) )
        return true;

    $parent = get_category($parent);
    foreach ( (get_the_category()) as $child ) {
        $child = get_category($child->cat_ID);
        if ( cat_is_ancestor_of($parent, $child) )
            return true;
    }

    return false;
}

コンディショナルタグは

<?php if ( function_exists('in_category_family') && in_category_family(1) ) : ?>

とする。括弧内の数字は親カテゴリーのID。

Trackback URL: