サポート » 使い方全般 » 記事のない子カテも一覧に表示したい

  • 親カテ「ca-oya」に属する、子カテ「cat-child01」「cat-child02」「cat-child03」というカテゴリがあります。
    「category-cat-oya.php」を作成して、親に属する子カテ一覧ページを作成しております。

    <?php
      global $query_string;
      query_posts($query_string . '&posts_per_page=20&order=ASC');
    ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <div class="inner">
      <a href="#">
        <p class="title">XXXXXXX</p>
        <p class="text">XXXXXXX</p>
      </a>
    </div>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>

    上記ソースで出力は出来たのですが、「cat-child03」だけが出力されず。
    違いと言えば、01と02には記事があって、03には記事がありません。
    今回は記事がなくてもこの03のカテゴリーも出力したいのですが、そんなことは可能なのでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • 03には記事がないのですから、表示されるはずもありません。
    「カテゴリを表示したい」という意味なら、そもそもそのコードは「01」や「02」を含め、カテゴリを表示するようにはなっていません。

    また query_posts() は非推奨の関数なので使わないようにしましょう。
    その用途なら pre_get_posts が使えます。
    functions.php に、例えば以下のような感じで。

    function my_pre_get_posts( $query ) {
        if ( is_admin() || ! $query->is_main_query() )
            return;
        if ( $query->is_category('cat-oya') ) {
            $query->set('posts_per_page', 20);
            $query->set('order', 'ASC');
        }
    }
    add_action( 'pre_get_posts', 'my_pre_get_posts' );

    この場合 category-cat-oya.php 側のループ外の部分は必要ありません。

    トピック投稿者 heppoko

    (@heppoko)

    回答ありがとうございました。
    「pre_get_posts」の使い方がよく分からなかったのですが、
    何とか同様の出力が出来ました。
    しかし記事がないカテゴリーの表示が結局はできず。
    あれこれ調べはしてみたのですが、
    get_termsやwp_list_categoriesにある「hide_empty」に相当するものは見当たらず。
    ということは、結局は記事がないとご提示いただいたソースでも出力は無理、
    ということなのでしょうね。

    でも「pre_get_posts」のことは勉強になりました。
    重ねが重ねありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「記事のない子カテも一覧に表示したい」には新たに返信することはできません。