フォーラム

[解決済み] 記事ページから同カテゴリのタイトル一覧を表示 (5 件の投稿)

  1. rikorinngo
    メンバー
    3 years前の投稿 #

    単一記事ページのときに同じカテゴリの記事タイトル一覧をサイドバーの下に表示しようとしていますがうまくいきません。
    PHPがほぼ分からないので原因の予測もつきません。アドバイスお願いします

    http://blog.dacelo.info/wordpress/entry-556.html
    の解説を参考に、

    ・プラグイン(Customizable Post Listings3.01)を入れて有効にする
    ・解説の<?php if(is_single() || is_category()) : ?>~<?php endif; ?>をsingle.phpの<?php get_sidebar(); ?>の下に書き込む

    という手順でやりました。
    書き込み後に見てみても、単一記事ページの表示が変更されないです。
    http://209.85.175.132/search?q=cache:Za-vII5OG8kJ:hsuzuki.ddo.jp/weblog/wp-content/mydata/plugin/CPL_manual_ver1.01.pdf+Customizable+Post+Listings+%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB&cd=7&hl=en&ct=clnk&client=opera#6の「B. 最近更新された記事」のコードを試しに書きこんでみたのですが、こちらも同じようになります

    サーバー:http://www.next-space.jp/server.phpで、PHP5.2.6とmysql5.0.41です
    WPのバージョン:2.7.1
    テーマ: http://wp.vicuna.jp/のwp.Vicuna。スタイルシート以外ほぼカスタマイズしていません
    インストールしているプラグイン:Customizable Post ListingsとAkismetとWP Multibyte Patchです

    Customizable Post Listingsの設定は
    Excerpt words 999
    Excerpt length 999
    Comment excerpt words 999
    Comment excerpt length 999
    Post URL short words 9
    Post URL short length 999
    で後はデフォルトです

  2. rikorinngo
    メンバー
    3 years前の投稿 #

    少し進行しました

    <?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 = "

  3. %post_URL%
  4. ",
    $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で固定されてしまってい、特定のカテゴリの記事しか表示されません。
    どのように修正すれば、見ている記事とおなじカテゴリのタイトルが表示されるでしょうか?

  • kei_999
    メンバー
    3 years前の投稿 #

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

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

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

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

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

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

  • torisan
    メンバー
    3 years前の投稿 #

    詳しく分析はしていないのですが、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
    メンバー
    3 years前の投稿 #

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

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

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

  • 返信

    ログイン しなければ投稿できません。

    About this Topic

    Tags