サポート » 使い方全般 » 記事ページから同カテゴリのタイトル一覧を表示

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

    (@rikorinngo)

    少し進行しました

    <?php if(is_single() ) : ?>
    <?php $cat = get_the_category(); $cat = $cat[0]; {
    echo “$cat->cat_ID” ;
    } ?>
    <ul id=”sub_navi”>
    <?php c2c_get_recent_posts(
    $num_posts = 100,
    $format = ”

    • %post_URL%
    • “,
      $categories = “$cat->cat_ID”,
      $orderby = ‘date’,
      $order = ‘DESC’,
      $offset = 0,
      $date_format = ‘m/d/Y’,
      $authors = ”,
      $include_passworded_posts = false) ; ?>

      <?php endif; ?>

      としたことでリストが表示されるようになりました。ただ、どの記事を見ても$cat->cat_IDが4で固定されてしまってい、特定のカテゴリの記事しか表示されません。
      どのように修正すれば、見ている記事とおなじカテゴリのタイトルが表示されるでしょうか?

    初めまして。
    私も、最近、ウィジェット内での現在の記事のカテゴリー取得で悩みましたので、何か、ヒントになれば・・・

    標準の「最近の投稿」ウィジェットを使用されていませんか?
    もしそうでしたら、「最近の投稿」ウィジェットを、一旦外してみてください。
    それで、現在の記事のカテゴリーが正しく取得できるようにならないでしょうか。

    私が試したところ、「最近の投稿」ウィジェット以降では、「現在の記事」が「最近の投稿」で表示されている一番下の記事のIDになってしまうようなのです。

    私は、結局、「最近の投稿」ウィジェットを使うのをやめて、テキストウィジェット内で、PHPが使えるプラグインを入れて、wp_get_recent_posts() を使って取得する方法に変えることで、最近の投稿を表示しつつ、それ以下の場所でも現在の記事IDを正しく取得するように対応できました。

    もしかすると、上の場合に当てはまらなくても、何か、サイドバー内で使っているウィジェットが邪魔をすることがあるのかも知れないので、一度、ウィジェットを外してみるとか、<?php get_sidebar(); ?>より上で同じコードを試してみるなどすると、原因が分かるかも知れません。

    あまりPHPに堪能ではないので、あいまいな事しかかけなくてすみません・・・これはやはりバグなのでしょうか???
    詳しい方、分析していただけると嬉しいです。。。

    詳しく分析はしていないのですが、WPの関数はグローバル変数を参照して処理する形が多く、なんかのウィジェットで書き換えちゃっているのかもしれません。。。

    自分は以下のような関数をウィジェットなどを処理する前に呼び出して(header.phpかfunction.php)現カテゴリの情報を保持しています。もうちょい良い方法があるかもしれませんが。。。参考になれば幸いです。

    global $_curcat;
    $_curcat = getCurCategory();

    function getCurCategory()
    {
    $cate = null;
    if( is_category() ) {
    $now_cate = get_query_var(‘cat’);
    $cate = get_category($now_cate);
    } else if (is_single() ) {

    $cates = get_the_category();

    $i = 0;
    $use_category = 0;

    foreach ($cates as $cate) {
    if($cate->category_parent > 0 && $use_category == 0)
    {
    $use_category = $i;
    }
    $i++;
    }
    $cate = $cates[$use_category];
    }
    return $cate;
    }

    $_curcat->cat_IDでカテゴリID、$_curcat->cat_nameでカテゴリ名が取り出せます。
    ここからほげほげすればお望みの処理が出来ると思います。

    トピック投稿者 rikorinngo

    (@rikorinngo)

    kei_999さん、torisanさん、回答ありがとうございます
    解決できました!

    kei_999さんのおっしゃってたように、ウィジェットで最近の記事を表示していました。
    これを外したところ、$cat->cat_IDがきちんと取得されるようになりました。torisanさんの指摘通り、ほかのウィジェットに影響されていたようです。
    まだまだ駆け出しでPHPがうまく使えないのですが、これからtorisanさんの方法も試して最近の記事も表示できるようにしてみようと思います。

    「IDが書き換えられているかも」なんて全く予測できませんでした。本当にありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事ページから同カテゴリのタイトル一覧を表示」には新たに返信することはできません。