ちなみに各カテゴリー一覧はデザインが少し違うためif文を使いカテゴリーidで判定し振り分けてます
これがなにか悪さをしている気がします。
カテゴリーの一覧ページでは、カテゴリーごとに別のテンプレートを適用できるので、それで対応してみるのはどうでしょう、
テンプレート階層 – WordPress Codex 日本語版
non888さん
おそらく原因は、複数のカテゴリーを選んだ場合の処理だと想定されます。
通常であれば、「もし、カテゴリーIDがXXだったら~~~」みたいな条件分岐をされていると思いますが、複数の場合は値が「array」で返ってくるため条件分岐上は「else」が適応されてしまいます。
ですので、対策としては「if (in_array( 1, $term_id)):」のような配列関数を利用した条件分岐を施す必要があります。
どういう条件分岐をされているか不明でしたので、私だったらこんなかんじかなというサンプルを乗せておきました。
<?php
//タームを取得
$taxonomy = 'category';
$terms = array();
$term = array();
$term_id = '';
$id = intval($post -> ID);//記事の投稿IDを取得
if($id):
$terms = get_the_terms($id, $taxonomy);//$idは投稿IDです
if($terms):
foreach($terms as $term):
$term_id[] = intval($term->term_id);//term_id(カテゴリーID)を配列に
endforeach;//END $terms
endif;//END
//タームIDからの条件分岐
if (in_array( 1, $term_id))://例:term_id(カテゴリーID)に1が含まれるときの処理
elseif(in_array( 2, $term_id)):
else:
endif;
//END タームIDからの条件分岐
endif;//END $id
?>
みなさん回答ありがとうございました。
photographer hiro.さんのサンプルコードを使用してうまくいくことができました。
ありがとうございます。