個別記事に表示させる同一カテゴリの記事一覧から、現在表示中の記事を除外する

個別記事の下部に同じカテゴリの記事のリンクを一覧にして表示する際、当サイトでは以下のようなコードを記述していました。

<div class="cont">
<h2 class="entry-main-title">関連ページ</h2>
<ul class="normal_list">
<?php
foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id;
query_posts($query) ;
?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
<?php wp_reset_query(); ?> 
</ul>
</div>

<?php endwhile; endif; ?>
</div>

ただ、この記述だと一点だけ気になる部分が・・・

このコードだと、現在表示している個別記事のリンクも関連記事の一覧に表示されてしまうんです。いろいろ検索していたら参考になるサイトが・・・

WordPressで現在のページを除いた所属カテゴリーの最新記事一覧を表示する | webOpixel

こちらに表示されているコードを参考に組みなおしてみました。

<?php
$cats = get_the_category();
//記事が2つ以上の場合表示
if(($cats[0]->count) > 1 ):
?>

<div class="cont">
<h2 class="entry-main-title">関連ページ</h2>
<ul class="normal_list">

	<?php
		$posts = get_posts('numberposts=100&exclude='.get_the_ID().'&category='.$cats[0]->term_id);
		if($posts): foreach($posts as $post) : setup_postdata($post);
	?>

<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a>  <a href="http://b.hatena.ne.jp/entry/<?php echo get_permalink(); ?>" target="_blank"><img src="http://b.hatena.ne.jp/entry/image/<?php echo get_permalink(); ?>" alt="" border="0" /></a></li>

	<?php endforeach; endif; ?>

</ul>

</div><?php endif; ?>

頭の条件分岐は参考サイトのコードを拝借しまして、それ以下は自分のサイトに合わせ組んでみました。

get_posts関数でnumberpostsの値を指定しないと、表示される記事数が5個になるみたいなので、運用されているサイトに合わせて数字を指定すると良いかと思います。

関連記事

サーバー別インストールガイド