• 解決済 humao

    (@humao)


    【状況】
    ■親カテゴリ(IDは1とします)
     -子カテゴリA
     -子カテゴリB
     -子カテゴリC

    子カテゴリA~Cにそれぞれいくつか投稿があります。(親カテゴリには投稿なし)

    【完成形】
    リスト表示で親カテゴリ(に属する子カテゴリを選択した投稿)の全記事一覧を日付順に表示したい

    (例)
    ・1月4日 タイトル(子カテゴリB)
    ・1月3日 タイトル(子カテゴリA)
    ・1月2日 タイトル(子カテゴリB)
    ・1月1日 タイトル(子カテゴリC)

    【現在のコード】

    <?php
    	$args["parent"] = 1; ←ここで親カテゴリ指定
    	$cats = get_categories($args);
     foreach ($cats as $cat) {
     $posts = get_posts("category=".$cat->cat_ID."&order=desc&orderby=date");
        foreach ($posts as $post) :
          setup_postdata($post);
     ?>
    
    <h1><?php the_date(); ?><?php the_title(); ?><?php echo "(".$cat->cat_name.")"; ?></h1>
     <?php endforeach; }?>

    現在子カテゴリごとに投稿が並んでしまいます。
    子カテゴリに関係なく指定の親カテゴリ関係の投稿をシャッフルして日付順にソートしたいです。

    アドバイスを頂戴できましたら幸いです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • カテゴリーのループは割愛して

    get_posts("cat=1");

    で良い気がします。
    カテゴリー名の表示は、setup_postdata の後に get_the_categoryで取得してください。

    トピック投稿者 humao

    (@humao)

    お返事ありがとうございます。

    以下のように修正をしてみましたが、今度は一部の投稿しか表示されなくなってしまいました。
    (カテゴリ名はひとまず未対応です)

    <?php
     $posts = get_posts("cat=1");
        foreach ($posts as $post) :
          setup_postdata($post);
     ?>
    <h1><?php the_date(); ?><?php the_title(); ?><?php echo "(".$cat->cat_name.")"; ?></h1>
     <?php endforeach; ?>

    後出しのようになり恐縮ですが、今後子カテゴリは増えてゆく予定です。
    親カテのみを指定して子カテの投稿を全て日付順に表示したいと思ってます。

    一部の投稿とはどういうことでしょう?投稿数の問題であれば、 posts_per_page で表示する最大数の指定を行ってください。

    トピック投稿者 humao

    (@humao)

    お返事ありがとうございます。

    おっしゃる通りposts_per_pageとページングの問題でした。
    query_postsを使いページングもうまくゆき、やりたいことが実現できました!

    jim912様ありがとうございました。
    これにて解決とします

4件の返信を表示中 - 1 - 4件目 (全4件中)

トピック「指定の親カテゴリに属する子カテゴリの記事一覧を日付順でソートしたい」には新たに返信することはできません。