ワードプレスのカスタム投稿で同一タームの記事一覧をアーカイブテンプレートページへ表示させる為に下のようなコードを用いていますが、表示させたいサブカテゴリーの記事が未投稿の場合にエラーが出てしまいます。


未投稿の場合はエラーが出ないようにするには下コードをどのように変更すればよろしいでしょうか?(未投稿の場合は空白状態で構いません)全く別のコードになっても構いませんので教えて下さい。

<?php
$term = array_shift(get_the_terms($post->ID, 'タクソノミー名'));
?>
<?php $tax_posts = get_posts('post_type=ポストタイプ名&taxonomy=タクソノミー名&term='.esc_html($term->slug)); if($tax_posts): ?>
<ul>
<?php foreach($tax_posts as $tax_post): ?>
<?php if ($post->ID != $tax_post->ID): ?>
<li><a href="<?php echo get_permalink($tax_post->ID); ?>"><?php echo esc_html($tax_post->post_title); ?></a></li>
<?php else: ?>
<li><?php echo esc_html($tax_post->post_title); ?></li>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<?php endif; ?>

以上です。

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/10/22 20:14:38
  • 終了:2013/10/23 17:08:02

ベストアンサー

id:rouge_2008 No.1

rouge_2008回答回数593ベストアンサー獲得回数3502013/10/23 04:10:18

ポイント100pt

前回の質問(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を利用して処理が実行されるのでエラーになっているのではないかと思います。

他1件のコメントを見る
id:kamefactory

丁寧な解説、いつもありがとうございます!
おっしゃる通り前回の質問の追記に関する質問でした。

おかげさまで無事希望通り表示させることができました。より可読性の高い方法まで教えていただき本当に感謝しております。

またご教授頂くこともあるかと思いますが、何卒よろしくお願いいたします。

本当にありがとうございます!!

2013/10/23 17:07:39
id:kamefactory

すいません。
子タームへの投稿がない時にエラーにならなくなったのですが、同一子タームに投稿すると、新しい投稿が上書きされてしまい、子ターム一覧ページに最新の投稿のみが表示されてしまいます。一覧表示させるのは上記コードをどう変更すればよいでしょうか?

ちなみに一番最初の質問時に回答していただいたコードでは、同一ページ内にそれぞれのターム毎の一覧が表示されています。

2013/11/05 15:12:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません