2017.01.20   Web ,

カテゴリ一覧でスラッグごとに条件分岐したいときの方法は?

WordPressでも記事やコンテンツ重視でいくならばそこまで気にしなかった分野だとは思うのだが、いよいよカテゴリ一覧(category.php)内で条件分岐をさせなけらばならないときはきた。方法はいろいろあるのだろうが、取り急ぎ簡単にできるものだけ引用しておくことにした。

is_categoryもしくはin_categoryをつかう

is_categoryはどうやって使うのか?一般的にはこんな感じだ。

<?php if (is_category(‘sample’)) { ?>
…ここに表記したものは、スラッグ『sample』一覧のときだけ表示される
<?php } ?>

is_categoryで複数カテゴリーに適応させる場合はこんな感じだ。

<?php if (is_category(array(‘test1′,’test2′,’test3′,’test4’))) { ?>
test1,test2,test3,test4のいずれかのスラッグの一覧ページで表示される
<?php } ?>

子カテゴリも親カテゴリごとまとめて適応させる場合は?

<?php if (is_category(‘test5’) || cat_is_ancestor_of(test5のID, $cat)) { ?>
test5という親カテゴリ及び以下の子カテゴリすべての一覧ページで表示される
<?php } ?>

参考:is_categoryとin_categoryの違いや使い方、条件分岐、複数指定、子孫カテゴリがある場合などなど


カテゴリの条件分岐ができれば、今度はタグ一覧だ。

ひとつの指定したタグだけ表示させたい場合は?

<?php if( has_tag( ‘タグのスラッグ’ )) : ?>
このタグの場合に表示するもの
<?php endif; ?>

ひとつの指定したタグだけ表示、その他も指定したいときは?

<?php if( has_tag( ‘タグのスラッグ’ )) : ?>
ここは空白
<?php else: ?>
それ以外のタグで表示するものを入力する
<?php endif; ?>

複数のタグを指定して表示させたい場合は?

<?php if( has_tag( array( ‘タグのスラッグ’, ‘タグのスラッグ’ ))) : ?>
ここは空白
<?php else: ?>
それ以外のタグで表示するものを入力する
<?php endif; ?>

参考:記事のカテゴリとタグで表示を出し分けるWordPressテンプレートタグ in_category, has_tag


おまけ:管理画面の親子カテゴリ位置を保持するには?

そうなのだ。カテゴリ別に表示を変える必要がでてくると、次第に親カテゴリと子カテゴリの住み分けや表示も必要になってくることがある。そこは参考URLをみながらうまいことやってほしい。今回はおまけとして、Wordpressの投稿時にカテゴリをチェックする際、子カテゴリだけをチェックすると、親カテゴリを無視して一覧の一番上に表示されてしまうという、厄介なシステムがある。今回は、function.phpに記入するだけで管理画面の親子カテゴリ位置を保持できるコードをメモしておく。

function solecolor_wp_terms_checklist_args( $args, $post_id ){
if ( $args[‘checked_ontop’] !== false ){
$args[‘checked_ontop’] = false;
}
return $args;
}
add_filter(‘wp_terms_checklist_args’, ‘solecolor_wp_terms_checklist_args’,10,2);


参考:HTML実体参照変換


槍の間合いもまだまだだな。