カテゴリにひもづくエントリーの抽出

電脳備忘録

カテゴリにひもづく記事を3件表示させようと思って下記のようなコードを書きました。ええ、1エントリー1カテゴリです。

<dl>
<?php
$cat = get_the_category();
$catname=$cat[0]->slug;
query_posts('&category_name=$catname&posts_per_page=3');
?>
<?php while ( have_posts() ) : the_post(); ?>
<dt><!-- 内容 --></dt>
<dd><!-- 内容 --></dd>
<?php endwhile; // end of the loop. ?>
<?php wp_reset_query(); //クエリをリセット ?>
</dl>

しかし、上記のコードだとエントリーがない(投稿記事が0件の)場合カテゴリのスラッグを拾ってくれなくて、カテゴリにひもづくエントリーがなくても3件表示してしまいました...。
googleあれこれ検索して、下記の内容を元になんとか解決できました。

get_query_var('category_name') だと投稿数が0でも名前が入ってくるのかもしれません。

WordPressフォーラム:現在のカテゴリの取得

下記のように修正した結果、カテゴリにひもづくエントリーがなければ何も表示しなくなりましたとさ、爽快爽快...。

<dl>
<?php
$category = get_query_var('category_name');
$query = 'category_name=' . $category . '&showposts=3';
query_posts($query);
?>
<?php while ( have_posts() ) : the_post(); ?>
<dt><!-- 内容 --></dt>
<dd><!-- 内容 --></dd>
<?php endwhile; // end of the loop. ?>
<?php wp_reset_query(); //クエリをリセット ?>
</dl>

広告

ブログの維持費に充てるでございます・・・。