サポート » 使い方全般 » singe.phpにてその記事のカテゴリ一覧(特定のカテゴリを除外)を表示したい

  • はじめまして。お世話になります。

    ・現在表示している投稿記事と同じカテゴリの記事一覧を表示したいです。
    ・記事一覧には現在表示している投稿記事は除外したいです。
    ・記事は複数のカテゴリに属していますが、特定のカテゴリ(子カテゴリも含む)は除外したいです。

    いろいろと検索しまして、
    見よう見まねで以下のコードをsinge.phpに入れてみたのですが、
    特定のカテゴリ(子カテゴリも含む)を除外するにはどうすればいいでしょうか?
    ‘category__not_in’を入れてみたりしたのですがうまくいきませんでした。

    <?php
    $post_id = get_the_ID();
    $cat_ = get_the_category() ;
    $a = $cat_[1];
    
    if (empty($a)) :
        $cat_ids = $cat_[0] -> term_id;
    else :
        foreach ($cat_ as $cat_id):
            $cat_ids .= $cat_id -> term_id.",";
        endforeach;
    endif ;
    
    $rel_posts = new WP_Query (array(
        'showposts' => 3,
        'post__not_in' => array($post_id),
        'cat' => $cat_ids,
        ));
    ?>
    
    <?php if( $rel_posts -> have_posts() ) : ?>
    <?php while ( $rel_posts -> have_posts() ) : $rel_posts -> the_post(); ?>
    
    <?php the_title(); ?>
    
    <?php endwhile; ?>
    <?php endif; ?>
    
    <?php wp_reset_postdata() ?>

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

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • ここから4ページぐらい前に似たようなスレッドがあるのかなと個人的には思いました。
    スレッドの数によって5ページ前とかにもなるのかな。
    違うとあれなのでリンクは張りません。

    トピック投稿者 tjmr

    (@tjmr)

    oisit様
    ありがとうございます。

    かなり検索したつもりだったのですが、似たような事例があるのか探したところ近いものがありました。
    https://ja.forums.wordpress.org/topic/152730

    子カテゴリの記事一覧だけ表示という点では似ているのですが、
    上記だと必要ないカテゴリもでてきてしまいます。

    例えばですが、カテゴリは
      野菜┬トマト
        ├玉ねぎ
        └きゅうり
      味 ┬甘い
        ├すっぱい
        └辛い
    のようになっていて、
    記事は
      記事1:トマト、甘い
      記事2:トマト、辛い
      記事3:玉ねぎ、甘い
    のように野菜と味のカテゴリから1つずつカテゴリを選択してます。
    カテゴリ「野菜」の記事一覧は必要なく、「味」の子カテゴリの記事一覧のみ出したいのです。

    除外したいカテゴリIDを入れればいいのかなとは思うのですが、
    どこにどういれたらいいのか分かってなくやっているので苦戦してます。。。

    教えていただけますと幸いです。
    よろしくお願いいたします。

    トピック投稿者 tjmr

    (@tjmr)

    すみません。
    混乱して若干迷走している感がありますが。。。

    カテゴリを除外ではなく、特定の親カテゴリ(1)を指定するかたちで
    singe.phpに以下のように書いてみたところ、
    同じ記事が3件表示されてしまいました。。。
    ご指摘いただけますと幸いです。

    
    <?php
        $cats = get_the_category();
    foreach ( $cats as $cat ) :
      if ($cat->parent==1)
        continue; ?>
    <ul>
      <?php $myposts = get_posts( 'showposts=3&category__in=' . $cat->term_id ); 
      foreach ( $myposts as $mypost ) : ?>
                            <li><?php the_title(); ?></li>
      <?php endforeach; ?>
    </ul>
    <?php endforeach; ?>
    <?php wp_reset_query(); ?>
    

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

    [解決済] 特定の親カテゴリ以下を非表示にさせたい

    まだ4ページ目にあるが、これとは問題が違うのかな

    トピック投稿者 tjmr

    (@tjmr)

    oisit様
    ありがとうございます。

    リンク先はカテゴリのリンクを表示ですが、記事一覧を出すにはどのように記述すればいいのでしょうか?

    echo以下に記事一覧がでるように書くのかなぐらいしか分からず。。
    少し格闘したのですが、基本がわかってないと難しいですね。

    すいません。スレタイしか見ていなかったから、カテゴリー一覧の話と思っていました。
    ごめんなさい。

    wordpress 記事一覧で特定の記事を除外する

    現在の投稿を除外するのは、
    'post__not_in'=> array(get_the_ID())
    でいけそうな感じ。

    `$parent_id = 2;
    $exclude = array($parent_id);
    $term_children = get_terms( ‘category’, array(‘child_of’ => $parent_id) );

    if($term_children){
    foreach($term_children as $child){
    $exclude[] = $child->term_id;
    }
    }`

    除外するのは特定のカテゴリーの親子のIDを取得するのは先のリンク先。
    どうやって親カテゴリーを探すのかはスレ主の希望のIDだとしか言えない。

    関数リファレンス/WP Query

    ふつうのループ

    <?php
    
    // The Query
    $the_query = new WP_Query( $args );
    
    // The Loop
    if ( $the_query->have_posts() ) {
    	echo '<ul>';
    	while ( $the_query->have_posts() ) {
    		$the_query->the_post();
    		echo '<li>' . get_the_title() . '</li>';
    	}
    	echo '</ul>';
    } else {
    	// no posts found
    }
    /* Restore original Post Data */
    wp_reset_postdata();

    でこの$argsのarrayの書き方と、どこにコード書くかなのかなと。
    コピペ職人的にはここまでで挫折しました。
    追加
    'category__not_in' =>$exclude,
    が動く気はしますが、子孫まで入ってるかどうかはわからない。

    • この返信は7年、 7ヶ月前にoisitが編集しました。
9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「singe.phpにてその記事のカテゴリ一覧(特定のカテゴリを除外)を表示したい」には新たに返信することはできません。