親カテゴリのページでサブカテゴリ毎に記事をまとめて更新状況を表示させたかったので調べた。
(実際にやってみたページはコチラ。)
サブカテゴリを指定して記事を取り出すのは以下のテンプレートタグで出来る事が分かった。
query_posts(‘引数’)
上記タグに引数を与えてやればその条件のデータを取得できる。
- posts_per_page(整数)
- 取得するページ数
- cat(整数)
- 取得するカテゴリID(カンマ区切りで複数指定可能)
他にもあるが省略。
実際に下記のように使用してみた。
[php]
<ul>
<?php if (have_posts()) : query_posts(‘posts_per_page=ページ数&cat=カテゴリID&orderby=並べる基準の項目&order=並び順’); ?>
<?php while (have_posts()) : the_post(); ?>
ループ内の処理
<?php endwhile; endif; wp_reset_query(); ?>
</ul>
[/php]
不満はカテゴリIDを直接指定しなくてはいけない事。
出来ればサブカテゴリのIDを全て取得→ループさせながら上記のhtmlを出力、というのが理想だったけどサブカテゴリのID取得方法が分からず断念・・・。
(2008年8月18日 追記:上記方法は、こちらの記事でで試してみた。一応成功。)
それが出来ればサブカテゴリが増えても自動で追加されるから便利なんだけど・・・。
仕方ないので一つずつカテゴリIDを指定して出力(サブカテゴリの数だけ同じものを書かなくてはいけない)。
以下が実際のソース。
[php]
<h3><a href="<?php bloginfo(‘wpurl’) ?>/install">インストール</a></h3>
<ul>
<?php if (have_posts()) : query_posts(‘posts_per_page=5&cat=4&orderby=ID&order=desc’); ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>
<h3><a href="<?php bloginfo(‘wpurl’) ?>/setting">ブログ設定</a></h3>
<ul>
<?php if (have_posts()) : query_posts(‘posts_per_page=5&cat=5&orderby=ID&order=desc’); ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>
<h3><a href="<?php bloginfo(‘wpurl’) ?>/design">デザイン</a></h3>
<ul>
<?php if (have_posts()) : query_posts(‘posts_per_page=5&cat=7&orderby=ID&order=desc’); ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>
<h3><a href="<?php bloginfo(‘wpurl’) ?>/template-tag">テンプレートタグ</a></h3>
<ul>
<?php if (have_posts()) : query_posts(‘posts_per_page=5&cat=8&orderby=ID&order=desc’); ?>
<?php while (have_posts()) : the_post(); ?>
<li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; ?>
</ul>
[/php]
ダラダラ書いてるけど違うのは「cat=XX」の箇所だけ。あとサブカテゴリのタイトルかな。