• 解決済 kazu

    (@kazuxtaka)


    TOPページ、サイドバーに投稿記事の属するカテゴリー名を表示させたいです。
    index.phpやsidebar.phpに以下のようなquery_postsのコードを組んでいます。
    ・index.phpの一部

    <?php
    $cat = get_the_category();
    $catname = $cat[0]->cat_name; //カテゴリー名
    query_posts('posts_per_page=5&cat=ID番号(1,2・3,5,6など複数)'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                            <dt><?php the_time('Y.m.d') ?></dt>
                            <dd><span class="cat"><?php echo $catname; ?></span> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>

    ・sidebar.phpの一部

    <?php
    $cat = get_the_category();
    $cat = $cat[0];
    $catname = $cat->cat_name; //カテゴリ名
    query_posts('posts_per_page=5&cat=ID番号(1,2・3,5,6など複数)'); ?>
    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                            <li><?php the_time('Y.m.d') ?><br />
    			<span class="cat"><?php echo $catname; ?></span><br />
                            <a href="<?php echo get_permalink() ?>"><?php the_title(); ?></a></li>
    <?php endwhile; endif; ?>
    <?php wp_reset_query(); ?>
                        </ul>

    現状、親カテゴリーA,Bとその中に小カテゴリーが2,3つ入っています。
    TOPページは、
    【親カテゴリーA】
    0000/00/00 カテゴリー名 記事タイトル
    0000/00/00 カテゴリー名 記事タイトル
    【親カテゴリーB】
    0000/00/00 カテゴリー名 記事タイトル
    0000/00/00 カテゴリー名 記事タイトル
    サイドバーは
    【親カテゴリーA】
    0000/00/00
    カテゴリー名
    記事タイトル
    0000/00/00
    カテゴリー名
    記事タイトル
    【親カテゴリーB】
    0000/00/00
    カテゴリー名
    記事タイトル
    0000/00/00
    カテゴリー名
    記事タイトル

    となってほしいのですが、カテゴリーの箇所が、
    TOPページでは記事のカテゴリー名がすべて最新の記事のカテゴリー名で表示され、
    内部ページのサイドバーには空欄ができています。
    初めは wp_reset_query が抜けていたかと思ったのですが、そうでもなさそうで

    記事を投稿するとカテゴリーの表示が変わるため、<?php echo $catname; ?>の部分が最新記事のカテゴリーしか表示させていないということは分かりましたが、何が問題なのかわかりませんでした。
    query_posts - reset_query は同じページに複数使うとデータが上書きされるなどということなのでしょうか。
    (的外れでしたらすみません。)
    アドバイスをいただけると助かります。
    よろしくお願い致します。

    ———————
    ・WordPress のバージョン
    4.2.2
    ・使用しているプラグインとテーマの情報(名称、入手先 URL、バージョン)
    自作
    ・PHP、MySQL のバージョン、サーバー環境(ホスティングサービス名、OS、ウェブサーバー等)
    phpは5.6です。hetemlを使用しています。
    ・ブラウザとそのバージョン
    最新のgooglechrome

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • get_the_category をループの中(while から endwhile までの間)で呼び出すと、どうでしょう。

    トピック投稿者 kazu

    (@kazuxtaka)

    gblsm さん

    アドバイスいただきありがとうございます。
    カテゴリーが無事出力されました!

    ループの外に get_the_category がいたために記事ごとのカテゴリーが反映されていなかった。
    という感じの理解でよいのでしょうか。
    まさか、こんなに早く解決できると思っていなかったのですが、
    ループの中と外…ちょっとした事ですが、なるほど。
    解決すると、当たり前といえば当たり前な気がします。

    ループの外に get_the_category がいたために記事ごとのカテゴリーが反映されていなかった。

    そのとおりだと思います。

    トピック投稿者 kazu

    (@kazuxtaka)

    gblsm さん

    ありがとうございました。
    一つ一つのコードの意味と全体の流れをもう少しよくみなければいけなかったです。
    解決済みに致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「get_the_category()で記事のカテゴリ名を表示したい」には新たに返信することはできません。