WordPress Tips
テンプレートタグを「どんな目的で、どのように」記述しているか、実際に使用しているタグのTips集です。記述ミスがありましたらご容赦ください。
カテゴリー別記事一覧のメニューを表示
CATEGORY :
テンプレートタグ使用例 | UPDATE : 2008.10.02
<?php query_posts(); ?> はループの出力条件を指定する関数で、使えるパラメータも多数あります。ページ表示をコントロールできる優れものです。が、なかなか手強い。
複数のカテゴリーを同じ PHP テンプレートで記事を表示し、その記事が属するカテゴリーの記事一覧だけを表示
する方法。さらに、一覧からリンクでシングルページへ移動しても、そのまま一覧を表示させる方法です。
「WordPressのツボ」の、左右に表示しているメニューの表示方法です。
1 : カテゴリーページで同一カテゴリー記事の一覧を取得
if 関数を使用し、カテゴリーページを表示中の場合、記事のカテゴリーナンバーを取得して同一カテゴリーの記事一覧を表示させます。
■カテゴリー記事の一覧を表示するテンプレートタグ
<?php if (is_category()): ?>
<?php query_posts($query_string."&order=ASC&orderby=title&showposts=-1"); ?>
<ul>
<?php if(have_posts()) : while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink(); ?>"><?php the_title('<li>','</li>'); ?></a>
<?php endwhile; endif; ?>
</ul>
<?php endif; ?>
※属する記事すべて(-1)をタイトル昇順(ASC)に表示します。
しかしこれだけでは if 関数を外しても、一覧からリンクでシングルページに移動した場合、一覧は表示されません。
2 : シングルページで同一カテゴリー記事一覧を取得する
表示している記事のカテゴリーIDを取得し、クエリに代入する方法で記事一覧を表示させます。
■シングルページで属するカテゴリー記事の一覧を表示する
<?php if(is_single()): ?>
<?php foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ; }
$nowcategory='cat='.$cat_id.'&order=ASC&orderby=title&showposts=-1';
query_posts($nowcategory) ; ?>
<ul>
<?php if(have_posts()) : while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink(); ?>"><?php the_title('<li>','</li>'); ?></a>
<?php endwhile; endif; ?>
</ul>
<?php endif; ?>
※属する記事すべて(-1)をタイトル昇順(ASC)に表示します。
以上ふたつのテンプレートタグを if 関数で分岐させ、同じ PHP ファィルで、カテゴリーページとシングルページに記事一覧を表示させます。
※注意 : カテゴリーが親子関係の場合、親カテゴリーをクリックすると小カテゴリーすべての記事一覧を表示しますが、一覧からリンク移動すると、当然小カテゴリーだけの一覧表示に変わります。これは現在対処法が見つかっていません。
NEXT >>