▽1
●
rouge_2008 ●100ポイント ベストアンサー |
前回の質問(http://q.hatena.ne.jp/1382148601)の返信コメントでの追加質問に関する問題でしょうか?(※コメント通知が届かなかった為、確認が遅くなりました。)
親ターム(カテゴリー)「sf」とは違って、「japan」ターム(カテゴリー)あるいは「usa」タームなど子タームのアーカイブページにアクセスした場合は、同一タームの記事一覧のみ表示されればいいのですね?
同一タームのみ表示されればいいのでしたら、デフォルトのクエリーで表示されますので、「query_posts()」でクエリーを変更したり、「get_posts()」で新規にループを作成する必要はありません。
「Twenty Twelve」や「Twenty Thirteen」などデフォルトのテーマの「archive.php」や「category.php」を参考にしてみてください。
<?php if ( have_posts() ) : ?><!-- この記述以降が記事がある場合の処理ですが、「get_posts()」で作成したループの場合は、質問文のコードのように返り値を代入した変数で判別します。 --> <ul> <?php while ( have_posts() ) : the_post(); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endwhile; ?> </ul> <?php else : ?> <!-- ここに記事がない場合の処理 --> <?php endif; ?>
※質問文のコードでは、記事がない場合にも「$term = array_shift(get_the_terms($post->ID, 'タクソノミー名'));」の行で記事IDを利用して処理が実行されるのでエラーになっているのではないかと思います。