1281315663 【Wordpress・PHP】


Wordpressで特定のカテゴリーに属する子カテゴリーとエントリーの一覧を表示したいと思っています。
画像にもまとめましたが、具体的には以下のような物が出力出来ればと思っています。

どなたかご教授頂けないでしょうか?

<h2>子カテゴリーA</h2>
<p><a href="<?php the_permalink() ?>">子カテゴリーAのエントリー</a></p>
<p><a href="<?php the_permalink() ?>">子カテゴリーAのエントリー</a></p>
<p><a href="<?php the_permalink() ?>">子カテゴリーAのエントリー</a></p>

<h2>子カテゴリーB</h2>
<p><a href="<?php the_permalink() ?>">子カテゴリーBのエントリー</a></p>
<p><a href="<?php the_permalink() ?>">子カテゴリーBのエントリー</a></p>
<p><a href="<?php the_permalink() ?>">子カテゴリーBのエントリー</a></p>

<h2>子カテゴリーC</h2>
<p><a href="<?php the_permalink() ?>">子カテゴリーCのエントリー</a></p>
<p><a href="<?php the_permalink() ?>">子カテゴリーCのエントリー</a></p>
<p><a href="<?php the_permalink() ?>">子カテゴリーCのエントリー</a></p>

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2010/08/09 10:01:04
  • 終了:2010/08/09 23:58:35

ベストアンサー

id:tobeoscontinue No.3

tobeoscontinue回答回数213ベストアンサー獲得回数532010/08/09 20:10:06

ポイント50pt
<ul>
<?php
 $args["parent"] = 1;
 $cats = get_categories($args);
 foreach ($cats as $cat) {
   echo "<h2>".$cat->cat_name."</h2>";
   $posts = get_posts("category=".$cat->cat_ID."&orderby=post_modified");
   foreach ($posts as $post) :
     setup_postdata($post);
?>
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; }?>
</ul>

だびたびすみません。コメント欄を開いておいてもらったほうがいいようです。

最初に戻ってget_categories()を使います。

$args["parent"] = 1とすることで親のID=1のカテゴリー(カテゴリーID=1の子)のリスト(配列)を入手します。

foreachで各カテゴリーについてget_posts()でカテゴリー1の子のエントリーを入手し、

the_permalink()とthe_title()を表示する。


説明が下手なわけではなく私の勝ってな拡大解釈でカテゴリー(ID=1)というのは例えであって

実際に必要とするのは全てのカテゴリーをリストするのではないかと思っていたからです。

読み込みが足りませんでした。

id:asgi

ありがとうございました!

求めていた表示を出力することができました。

本当に勉強になりました!

本日は長々とお付き合いいただきありがとうございました。

2010/08/09 23:55:14

その他の回答(2件)

id:tobeoscontinue No.1

tobeoscontinue回答回数213ベストアンサー獲得回数532010/08/09 14:37:15

ポイント50pt
<ul>
<?php
 $args["hierarchical"] = 0;
 $cats = get_categories($args);
 foreach ($cats as $cat) {
   echo "<h2>".$cat->cat_name."</h2>";
   $posts = get_posts("category=".$cat->cat_ID."orderby=post_modified");
   foreach ($posts as $post) :
     setup_postdata($post);
?>
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; } ?>
</ul>

http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%9...

特定のカテゴリーIDのみであればget_categoryやget_the_categoryが使えると思います。

ここでは全てのカテゴリーが拾えるようget_categoriesを使いました。引数なしで使うと親と子も拾ってしまいダブルので"hierarchical"を指定してみたところいい感じで拾いましたが希望する動作と違う場合は指定を変えてみたり違うアプローチが必要になると思います。

カテゴリー名をechoで出力しているのはチョット汚いですがWordPressでの関数がわかりませんでしたorz。


カテゴリーIDが入手できたらget_postsで投稿を入手しforeachで繰り返します。投稿数は初期値の5ですが必要ならnumberpostsで指定します。

WordPressのやり方に習ってthe_permalink()やthe_title()を使っていますが

   $posts = get_posts("category=".$cat->cat_ID."orderby=post_modified");
   foreach ($posts as $post) {
     echo "<p><a href=".get_permalink($post->ID).">".$post->post_title."</a></p>";
   }

でも同じように動きました。

id:asgi

ありがとうございます!!

欲しい形に出力出来ました!

すみません、ちなみに全体ではなくカテゴリーID=1に属している子カテゴリーのみの場合ってどうなるでしょうか?

不勉強で申し訳ございません。もう少しお付き合い頂けると幸いです。

何卒よろしくお願いいたします。

2010/08/09 15:10:38
id:tobeoscontinue No.2

tobeoscontinue回答回数213ベストアンサー獲得回数532010/08/09 16:07:55

ポイント50pt

一部間違いがありました。

get_posts("category=".$cat->cat_ID."orderby=post_modified");

get_posts("category=".$cat->cat_ID."&orderby=post_modified");

と&が必要でした。

<ul>
<?php
 $cat = get_category(1);
   echo "<h2>".$cat->cat_name."</h2>";
   $posts = get_posts("category=".$cat->cat_ID."&orderby=post_modified");
   foreach ($posts as $post) :
     setup_postdata($post);
?>
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; ?>
</ul>

get_categories($args)をget_category(1)に変えて不必要なforeachを削除してみました。

<ul>
<h2><?php echo get_cat_name(1) ?></h2>
<?php
   $posts = get_posts("category=1&orderby=post_modified");
   foreach ($posts as $post) :
     setup_postdata($post);
?>
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; ?>
</ul>

あるいはget_category(1)も止めて$cat->cat_nameの代わりにget_cat_name(1)を使ってみました。

id:asgi

迅速な回答ありがとうございます!!

本当に厚かましくて申し訳ないんですが、

頂いたソースですと「カテゴリー1の見出し」と「カテゴリー1のエントリー」が表示されているのですが、

希望としては「カテゴリー1に属した各子カテゴリーの見出し」と「各子カテゴリーのエントリー」を表示したいと思っています。

ちょうど添付画像のイメージです。こちらの説明が下手で本当に申し訳ないです。

もしお付き合い頂けましたら、もう一度だけご回答お願い頂けないでしょうか?

よろしくお願い申し上げます。

2010/08/09 16:29:27
id:tobeoscontinue No.3

tobeoscontinue回答回数213ベストアンサー獲得回数532010/08/09 20:10:06ここでベストアンサー

ポイント50pt
<ul>
<?php
 $args["parent"] = 1;
 $cats = get_categories($args);
 foreach ($cats as $cat) {
   echo "<h2>".$cat->cat_name."</h2>";
   $posts = get_posts("category=".$cat->cat_ID."&orderby=post_modified");
   foreach ($posts as $post) :
     setup_postdata($post);
?>
     <p><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php endforeach; }?>
</ul>

だびたびすみません。コメント欄を開いておいてもらったほうがいいようです。

最初に戻ってget_categories()を使います。

$args["parent"] = 1とすることで親のID=1のカテゴリー(カテゴリーID=1の子)のリスト(配列)を入手します。

foreachで各カテゴリーについてget_posts()でカテゴリー1の子のエントリーを入手し、

the_permalink()とthe_title()を表示する。


説明が下手なわけではなく私の勝ってな拡大解釈でカテゴリー(ID=1)というのは例えであって

実際に必要とするのは全てのカテゴリーをリストするのではないかと思っていたからです。

読み込みが足りませんでした。

id:asgi

ありがとうございました!

求めていた表示を出力することができました。

本当に勉強になりました!

本日は長々とお付き合いいただきありがとうございました。

2010/08/09 23:55:14

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません