IDを直接指定して分ける方法
ってどうしてるのですか?
テンプレートタグだけでは解決できそうにないのでPHPプログラムを書く必要があるかと。
コードの例示は出来ませんがアイデアとして、
get_the_categoryでカテゴリーリストを取得してカテゴリごとにquery_postsする。
で出来そうです。
SQLを使ってもっとスマートにもできそうな感じもしますが・・・
すみません、答えになってないですよね。
念のため、やりたいこと確認させてください。
例えば、カテゴリーが以下の構成とします。
コンピューター
├ Mac
├ Windows
└ Linux
そして、Windows カテゴリーを指定したとき、Mac カテゴリーおよび Linux カテゴリーの記事一覧も見せたいということですよね? つまりは「兄弟姉妹カテゴリーの記事を見せたい」ということでしょうか??
この場合、現在のカテゴリーの親を get_category_parents() で取得して、そこから get_category_children() で子カテゴリーを取ってくれば、兄弟姉妹カテゴリーが分かります。あとは、taikiken のおっしゃる通り、query_posts() なり、get_posts() なりで記事一覧を取ってくればいいです。
テンプレートタグを書いたことがなければちょっと難しいですが、フォーラムには「特定カテゴリーの記事リストを別途表示する」課題は何回も出ていますので、サンプルコードを探してみてください。
すみません。説明不足だったようです。。
例えば、
コンピューター
├ Mac
├ Windows
└ Linux
の場合、コンピュータ(親カテゴリ)のカテゴリーページで、Mac、Windows、Linux(子カテゴリ)に投稿された記事一覧をそれぞれ、Mac、Windows、Linuxに分けて表示させたいのです。
IDを直接指定して分ける方法(カテゴリーページ内)
<ul>
<?php if (have_posts()) : query_posts(’posts_per_page=5&cat=ID’); ?>
<?php while (have_posts()) : the_post(); ?>
表示させる内容
<?php endwhile; endif; ?>
</ul>
上記の方法で、表示したい子カテゴリIDを指定し記事一覧を分けて表示させることが可能ですが、子カテゴリの追加毎に指定をしていかなければならないので、自動で書き出してくれる方法がないか悩んでいます。
フォーラムでもこれらに関する記事を探してみたのですが見あたらなかったので・・
lilyfanさんのおしゃっるようにget_category_children()を利用して、自動で子カテゴリー別に記事一覧をループさせる方法があるのでしょうか・・?
phpは初心者なもので、いろいろ探しながら頑張ってみます。
もし、関数の指定方法があればご教授ください。
宜しくお願いいたします。
コードの例示ありがとうございます。
get_category_children()を利用して、自動で子カテゴリー別に記事一覧をループさせる方法があるのでしょうか・・?
残念ながら自動にはならないです、子カテゴリIDを取得できるだけです。
取得できたIDの数分ilyfanさんのいうようにquery_posts、get_postsを実行すると良いです。
余談ですが、get_category_childrenというのが使えるのですね。
Codexにも記載がないし、こういう関数リファレンスはどこで見てるのですか、lilyfanさんは良ければ教えてください。
Codexにも記載がないし、こういう関数リファレンスはどこで見てるのですか、lilyfanさんは良ければ教えてください。
Codex はどうも更新が遅いので、いつも WordPress コアのソースを見ています。テンプレートタグはたいてい wp-includes/*-template.php に入っています。カテゴリー関連の基礎的な関数ならば category.php 自体に入っていることもあります。
ただし、wp-includes/ 配下にある関数すべてが公開された API なのかどうか不明なので、プラグインやテーマで使っていいかは悩ましいところです。これが PHP5 を前提としてコードになっていれば、public 宣言されているものは使える、private なら無理と明確なんですが。そのへんは、コードを見て「内部関数っぽい」と思ったらやめておくとかの柔軟な判断が必要です。
2年前の投稿に返信させて頂いてよろしいでしょうか?
今、同じ状況で悩んでおります。
こちらは解決方法ありましたでしょうか?
2年たったのでもしかしたら、方法があるのかと思いまして・・・
よろしくお願いします。