サポート » 使い方全般 » 選択されたカテゴリーの投稿一覧をサイドバーに表示がおかしい。

  • 解決済 eijiy

    (@eijiy)


    WordPress3.0.1日本語版、自作テーマで、index.php/sidebar-right.php/functions.phpのみだったのを、header.php/footer.php/page.php/archive.php/single.phpを追加したところ、選択されたカテゴリーの投稿一覧をサイドバーに表示させる部分が、4つのカテゴリーのどのカテゴリーを選択しても、ただ1つ子カテゴリーの無いカテゴリーの投稿一覧が表示される様になってしまいました。

    そこで関係がありそうなpage.php/archive.php/single.phpをそれぞれ外してみたところ、archive.phpを外すと、親と子カテゴリーまでのカテゴリーは投稿一覧が表示される様になりましたが、子カテゴリーが2つあると選択されたカテゴリーの投稿一覧の一部、例えば子カテゴリー2つの内の1つだけ、投稿一覧が表示されています。

    こういう場合、どう対応すべきでしょうか。
    どなたかご教授頂けないでしょうか。
    宜しくお願い致します。

    参考までにsidebar-right.phpの選択されたカテゴリーの投稿一覧をサイドバーに表示させる部分のコードです。

    <?php if (is_category() || is_single()) : ?>
    	<?php
                 $cat = get_the_category(); $cat = $cat[0]; echo '<dt>' . $cat->cat_name . 'の投稿一覧</dt>';
                 $cat = $cat->cat_ID;
                 $category_posts = get_posts("order=asc&category=$cat&numberposts=-1");
             ?>
             <dd>
                 <ul>
                     <?php foreach($category_posts as $post): ?>
                         <li class="myEllipsis"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
                     <?php endforeach; ?>
                 </ul>
              </dd>
    <?php endif; ?>

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • eijiy さん、こんばんは。

    $cat = get_the_category();
    $cat = $cat[0];
    echo '<dt>' . $cat->cat_name . 'の投稿一覧</dt>';
    $cat = $cat->cat_ID;

    この記述だと、最初の記事が属する複数のカテゴリーのうち、配列の最初 ( $cat[0] )で取り出せたカテゴリーの ID を取得しているので、そういう挙動になる場合が出てきますね。任意のカテゴリー ID を上手く取得する方法を考えるべきです。その方法については、

    こういう場合、どう対応すべきでしょうか。

    と聞かれましても、どういう挙動が望ましいのかを明記して頂けないと回答のしようがありません。

    if ( is_category() ) {
        $cat = get_query_var('cat');
        $catname = get_the_category_by_ID($cat);
    } else {
        $cat = get_the_category();
        $cat = $cat[0];
        $cat = $cat->cat_ID;
        $catname = $cat->cat_name;
    }
    echo '<dt>' . $catname . 'の投稿一覧</dt>';

    こういうことでしょうか?

    トピック投稿者 eijiy

    (@eijiy)

    mizubeさん、返信ありがとうございます。

    説明不足でした。

    選択したカテゴリーのタイトルと其れに含まれる全て(子も孫も)の投稿一覧をサイドバーに表示させたかったんです。

    それで提示されたコードで以下の様にして、選択したカテゴリーのタイトルとその投稿一覧をサイドバーに表示させることが出来ました。

    <?php if (is_category() || is_single()) : ?>
         <?php
             $cat = get_query_var('cat');
        	 $catname = get_the_category_by_ID($cat);
    	 echo '<dt>' . $catname . 'の投稿一覧</dt>';
             $category_posts = get_posts("order=asc&category=$cat&numberposts=-1");
         ?>
         <dd>
             <ul>
                 <?php foreach($category_posts as $post): ?>
                     <li class="myEllipsis"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
                 <?php endforeach; ?>
             </ul>
         </dd>
    <?php endif; ?>

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

    もし間違っているところや修正すべき点があればご指摘ください。

    トピック投稿者 eijiy

    (@eijiy)

    上記のコードを訂正します。

    <?php if (is_category() || is_single()) : ?>
                        <?php
                            if (is_category()) {
                                $cat = get_query_var('cat');
                                $catname = get_the_category_by_ID($cat);
                            } else {
                                $cat = get_the_category();
                                $cat = $cat[0];
                                $cat = $cat->cat_ID;
                                $catname = $cat->cat_name;
                            }
                            echo '<dt>' . $catname . 'の投稿一覧</dt>';
                            $category_posts = get_posts("order=asc&category=$cat&numberposts=-1");
                        ?>
                        <dd>
                            <ul>
                                <?php foreach($category_posts as $post): ?>
                                     <li class="myEllipsis"><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
                                <?php endforeach; ?>
                             </ul>
                         </dd>
                    <?php endif; ?>

    これで選択されたカテゴリーや記事を開いた時に、そのカテゴリーの投稿一覧がサイドバーに表示される様になりました。

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

    eijiy さん

    お盆を挟んで反応できませんでした。解決されたようで何よりです。

    自分自身の書き込みを改めて見るとやや攻撃的な印象をうけました。
    特に腹立たしいことがあったわけではないのですが、言葉をもう少し選ばないとダメですね。
    もし私の書き込みでご気分を悪くされていたら、申し訳ありませんでした。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「選択されたカテゴリーの投稿一覧をサイドバーに表示がおかしい。」には新たに返信することはできません。