サポート » 使い方全般 » 記事下に子カテゴリ一覧のリンクのみを表示する方法

  • 解決済 linamia

    (@linamia)


    お世話になります。

    Twentytenをカスタマイズしています。
    loop-single.phpの記事下部分にコードを加えて、
    その記事の所属する子カテゴリ一覧を表示したいと思っています。

    ——————————————————

    例)

    親カテゴリ:イタリアン
     子カテゴリ1:パスタ
      L記事A
      L記事B
     子カテゴリ2:ピザ
      L記事C
     子カテゴリ3:【ラザニア】
      L記事D
      L記事E

    現在【ラザニア】の記事を開いているとして、
    【ラザニア】記事の最下部に

    >【ラザニア】の記事一覧
     記事D
     記事E

    という一覧表示をいれたい。

    ——————————————————

    そこで下記のコードを見つけて、概ね実装したい内容は出てくるのですが、
    出力結果が

    1.親カテゴリの記事一覧(=>「イタリアン」の記事一覧、記事A~E)
    2.子カテゴリの記事一覧(=>「ラザニア」の記事一覧、記事D~E)

    の2つ出てきてしまうので、
    「1」を削除して「2」のみ表示されるようにしたいです。

    <?php $cat_info = get_the_category();
    $cat_term = $cat_info[0] -> category_parent;
    $cat_info = get_categories(‘child_of=’.$cat_term.’&orderby=order’);
    foreach ($cat_info as $category) { if($category->count != 0) : ?>
    <h2><?php echo $category->cat_name; ?>のページ一覧</h2>

      <?php query_posts(‘posts_per_page=-1&order=ASC&category__in=’.$category->term_id);
      if (have_posts()) : while (have_posts()) : the_post();
      ?>

    • “><?php the_title(); ?>
    • <?php endwhile;wp_reset_query();endif;endif; ?>

    <?php }; ?>

    ※出展元のサイトさんです
    http://mellowchanter.info/web/wordpress/childcatlist/

    色々調べてみたのですが、どこを削除すればいいのかわからなくて悩んでいます。
    ご存知の方ご教示いただけませんでしょうか。
    どうぞ宜しくお願い致します。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック投稿者 linamia

    (@linamia)

    すみません! すごい勘違いをしていることに気が付きました。
    出力される消したい部分は

    1.親カテゴリの記事一覧(=>「イタリアン」の記事一覧、記事A~E

    のみだけではなく、

    3.「【ラザニア】」以外の子カテゴリーの一覧も

    になります。

    なので、端的に言うと、
    「記事D(【ラザニア】内)」を開いた時に、
    【ラザニア】の記事一覧(記事D、記事E)を取得する方法が知りたいです。

    無知で申し訳ございません。

    $cat_term = $cat_info[0] -> category_parent;

    $cat_term = $cat_info[0]->term_id;

    に変えるとどうでしょう?

    すみません、それだけでは足りませんでした。もう一行

    $cat_info = get_categories('child_of='.$cat_term.'&orderby=order');

    $cat_info = get_categories( 'include=' . $cat_term );

    に変えるのも同時に。

    トピック投稿者 linamia

    (@linamia)

    お礼が遅れてしまいまして申し訳ございません。
    おかげさまでほぼほぼ実装したい形に近づいてきました!
    「消す」のではなくて「コードの書き換え」だったのですね。

    ただ、もしご存じでしたら追加でもう1点お伺いしたいのですが、
    頂いたコードを書き換えたさせていただいたところ、
    「記事D」にアクセスした時に、

    【イタリアン】の関連記事一覧 <タイトル
     ・記事A
     ・記事B
      …
     ・記事D
     ・記事E

    と出てきてしまったので、少し書き換えて、これを

    【ラザニア】の関連記事一覧<タイトル
     ・記事D
     ・記事E

    にすることは可能なのでしょうか?

    ※つまり、仮に「記事A」にアクセスした場合は、
     【パスタ】の記事一覧
      ・記事A
      ・記事B
     にしたいという感じです。

    たびたびで申し訳ございません。
    これといったお礼ができるわけでもありませんのに
    ご教示いただいていることに心より感謝いたします。

    現在のコードを見せていただけませんか。
    貼り付けるときコード全体をバッククォートで囲めばきれいに表示されます。
    バッククォートは、入力欄の上にある code ボタンを押して入力できます。

    念のため確認してください。
    投稿A~Eには子カテゴリー1~3のどれかひとつだけついていて、親カテゴリーはついていないと考えています。
    もし親と子の両方ついていたら、親を無視するためのコードを増やさなければなりません。

    トピック投稿者 linamia

    (@linamia)

    いつもありがとうございます!
    また、CODEボタンの使い方もありがとうございました。

    現状のコードは下記のとおりです。

    <?php $cat_info = get_the_category();
    $cat_term = $cat_info[0]->term_id;
    $cat_info = get_categories( 'include=' . $cat_term );
    foreach ($cat_info as $category) { if($category->count != 0) : ?>
    <h2><?php echo $category->cat_name; ?>のページ一覧</h2>
    <ul>
    <?php query_posts('posts_per_page=-1&order=ASC&category__in='.$category->term_id);
    if (have_posts()) : while (have_posts()) : the_post();
    ?>
    <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endwhile;wp_reset_query();endif;endif; ?>
    </ul>
    <?php }; ?>

    現状は、
    投稿A~E全ての記事一覧が、

    「イタリアン」の記事一覧
     ・記事A
      …
     ・記事E

    となっている形なので、全記事に同じものが表示されています。
    お答えになっていないようでしたら申し訳ございません。

    お時間のある時にでもどうぞよろしくお願いいたします!

    linamiaさん、投稿A~Eには子カテゴリー1~3のどれかひとつだけついていて、親カテゴリーはついていないと考えています。実際はどうなっていますか?
    もし親と子の両方ついていたら、親を無視するためのコードを増やさなければなりません。

    トピック投稿者 linamia

    (@linamia)

    すみません、ようやく意味が理解できました!
    そして私の説明が大変足りなかったことに気が付きました。
    申し訳ございません。

    仰る通り「親」にチェックを入れています。

    なので、

    記事D~E(ラザニア関連の記事)

    のカテゴライズは

    親:イタリアン
    であり
    子:ラザニア
    の両方です。

    本当に恐れ入ります。

    実際に動作させてはいませんが、、、

    親カテゴリーを読み飛ばすコードを入れました。
    また query_posts を get_posts に変えました(wp_reset_query が不要になります)。

    <?php $cats = get_the_category();
    foreach ( $cats as $cat ) :
      if ( 0 == $cat->parent ) // 親を読み飛ばす
        continue; ?>
    <h2><?php echo $cat->name; ?> のページ一覧</h2>
    <ul>
      <?php $myposts = get_posts( 'posts_per_page=-1&order=ASC&category__in=' . $cat->term_id ); ?>
      foreach ( $myposts as $mypost ) : ?>
      <li><a href="<?php echo get_permalink( $mypost->ID ) ?>"><?php echo get_the_title( $mypost->ID ); ?></a></li>
      <?php endforeach; ?>
    </ul>
    <?php endforeach; ?>

    トピック投稿者 linamia

    (@linamia)

    いつもありがとうございます!!
    早速埋め込ませて頂いたところ下記エラーが出てきました。

    Parse error: syntax error, unexpected ‘endforeach’ (T_ENDFOREACH) in D:\InstantWP_4.4.2\iwpserver\htdocs\wordpress\wp-content\themes\twentyten-child\loop-single.php on line 99

    何度も申し訳ございません……。
    結構奥の深い問題だったのですね。

    すみません、間違えました。
    7行目( get_posts がある行 )の末尾の ?> を消してください。

    トピック投稿者 linamia

    (@linamia)

    できました!! ありがとうございます!
    本当一週間近くもお付き合いいただいて
    何とお礼を言ったら良いのやら…重ね重ねお礼申し上げます。

    周辺知識に関しても今回凄く勉強になりました。
    もっと頑張ってWPの勉強をして
    いつか私も他の方にアドバイスをできるくらいになれるように頑張ります!

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「記事下に子カテゴリ一覧のリンクのみを表示する方法」には新たに返信することはできません。