サポート » 使い方全般 » 関連記事を特定の親カテゴリ内の小カテゴリで判断させたい

  • 解決済 minoya

    (@minoya)


    いろいろ試行錯誤をしたのですが実装できず
    検索もしたのですが、思うような結果にはならず…
    ご教授いただけたら大変嬉しいです。よろしくお願いいたします。

    親カテゴリA
      小カテゴリ1
      小カテゴリ2

    親カテゴリB
      小カテゴリ3
      小カテゴリ4
      小カテゴリ5

    と言ったカテゴリ分けをしていて
    親カテゴリAの中から1つか2つ
    親カテゴリBの中から複数つけられています。

    記事ページに関連記事を表示させたいのですが
    親カテゴリBの同じ小カテゴリがついている記事を出したいのです。

    http://nelog.jp/wordpress-customize-related-entries
    こちらのものを入れると、親カテゴリA内の同じものが表示されます。

    何卒よろしくお願いいたします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 「親カテゴリB」の子カテゴリーに属する記事を取得するということでいいのでしょうか?
    勘違いしていたらごめんなさい。

    カテゴリー オブジェクトには親カテゴリーの ID を取得することができる parent メンバー変数があるのでこれを使えばいいのではないでしょうか?

    $parent_id = get_cat_ID( '親カテゴリB' );
    if ( $parent_id ) {
    	$categories = get_the_category( $post->ID );
    	$ids = array();
    	foreach ( $categories as $category ) {
    		if ( $category->parent === $parent_id ) {
    			array_push( $ids, $category->cat_ID);
    		}
    	}
    	$query = new WP_Query( array(
    		'post__not_in' => array( $post->ID ),
    		'category__in' => $ids,
    		'posts_per_page'=> 10,
    		'orderby' => 'rand',
    	) );
    	if ( $query->have_posts() ) {
    		while ( $query->have_posts() ) {
    			$query->the_post();
    			the_title();
    		}
    	}
    	wp_reset_postdata();
    }
    トピック投稿者 minoya

    (@minoya)

    ishitakaさん

    お返事ありがとうございます!!!
    説明がヘタクソですみません。。。

    やりたいことは、たとえば
    今見ている記事に、小カテゴリ1・2・4が付いていたら
    小カテゴリ4がついた記事一覧を表示させたいです。

    いただいたものをsingle.phpに入れてみたのですが
    何も表示がされませんでした…

    PHP初心者なもので、とても助かります(>_<)
    よろしくお願いいたします。

    そのままのコードでは動作しません。多少手直しが必要です。

    まず、コードは php コードなので、<?php から ?> で囲みます。

    $parent_id = get_cat_ID( '親カテゴリB' );
    の ‘親カテゴリB’ は実際のカテゴリー名(スラッグ名ではない)に置き換えてください。

    the_title();
    の部分は、実際に表示するコードを記述する必要があります。これは示されたページを参考にしてください。

    WP_Query のパラメーターも調整する必要があります。

    • この返信は7年、 6ヶ月前にishitakaが編集しました。
    トピック投稿者 minoya

    (@minoya)

    ishitakaさん

    お返事ありがとうございます!!

    <?php から ?> では囲んでいたのですが
    ‘親カテゴリB’のところに、カテゴリID(数字)を入れていました。
    カテゴリー名を入れたら表示がされました!!
    思っている通りの表示になっています!!ありがとうございます!!
    WP_Query のパラメーターも好みに調整いたしました。

    もうひとつ教えていただきたく…
    the_title();
    の部分なのですが、HTMLタグも入れたくて
    他の箇所は下記のような<?php ?>を複数使った?書き方をしていました。

    
    <?php if( $the_query->have_posts() ): ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
    
    <div>
    <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
    </div>
    
    <?php endwhile;?>
    <?php else: ?>
    <?php endif; ?>
    

    ソースとしては汚いのかもしれないのですが、HTMLを書くのに分かりやすくて。。。
    今回もこのように書くにはどのようにすれば良いでしょうか?
    ちょっと試してみたのですが、力不足で実現できなくて。。

    お手数をおかけして申し訳ないのですが、ご教授いただけますでしょうか。

    トピック投稿者 minoya

    (@minoya)

    ishitakaさん

    すみません!!
    もう一度、いただいたソースをそのままその部分以外を
    それぞれ<?php ?>で囲んだらできました!!

    半分諦めかけていた所にお返事いただけて
    本当に助かりました!!
    本当に本当にありがとうございました!!

    解決したようでよかったです(「解決済み」にマークしてくださいね)。
    コードは短いと思いますので理解して使用するといいと思います。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「関連記事を特定の親カテゴリ内の小カテゴリで判断させたい」には新たに返信することはできません。