サポート » 使い方全般 » 記事が属しているカテゴリのランキング

  • 解決済 iguigu

    (@iguigu)


    普通のランキングは下記コードで右カラムに表示されているのですが、
    記事詳細ページに来た時に、その記事が属しているカテゴリのランキングを表示するにはどのように書き換えればいいでしょうか?

    
                <!-- Popularity Ranking -->
                <h3 class="rows title_border">人気ランキング</h3>
                <ul class="list-ranking">
    	            
    
                <?php
                 global $post;
                 $args = array(
    			  'posts_per_page' => 3,
                  'post_type' => 'column',
                  'meta_key' => 'views',
                  'orderby' => 'meta_value_num',
                   'cat' => $cat_id
    
                 );
                  $posts = get_posts($args);
                  $i = 0;
                  foreach($posts as $post) :
                  $i++;
                ?>
                
                
    	            <li class="media kanshu">
    	                  <!-- ランキング順位 -->
    	                  <div class="rank"><?php echo $i;?></div>
    	                  <!-- サムネイル -->
    	                  <div class="media-left">
    	                    <a href="<?php the_permalink($posts->ID) ?>"><?php the_post_thumbnail($posts->ID,'thumb'); ?></a>
    	                  </div>
    	                  <!-- 記事 -->
    	                  <div class="media-body">
    	                    <a href="<?php the_permalink($posts->ID) ?>">
    	                      <?php echo $post-> post_title;//mb_substr(strip_tags($post-> post_title),0,40).'...'; ?>
    	                    </a>
    	                  </div>
    	                  
    	

    ヘルプの必要なページ: [リンクを見るにはログイン]

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • CG

    (@du-bist-der-lenz)

    閲覧中(current)のページのカテゴリーを meta_key の絞込条件にすると良いでしょう。

    トピック投稿者 iguigu

    (@iguigu)

    素人ですいません。
    コードを書いて見たものの、
    上手くいかないためどの様に記述すれば良いかご教授いただけないでしょうか?

    こんにちは

    get_posts() の category__and または category__in パラメーターでカテゴリーを指定できます。
    https://wpdocs.osdn.jp/関数リファレンス/WP_Query#.E3.82.AB.E3.83.86.E3.82.B4.E3.83.AA.E3.83.BC.E3.81.AE.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

    カテゴリーは、wp_get_object_terms() 等で取得することができます。
    https://wpdocs.osdn.jp/関数リファレンス/wp_get_object_terms

    $ids = wp_get_object_terms( $post->ID, 'category', array( 'fields' => 'ids' ) );
    $args = array(
    
    	(省略)
    
    	'category__and' => $ids,
    );
    トピック投稿者 iguigu

    (@iguigu)

    これでいいのでしょうか。
    カスタム投稿のsingle.phpなのですが、何もランキングが表示されないです。。

       <?php
    	         global $post;
    	         $ids = wp_get_object_terms( $post->ID, 'column_category', array( 'fields' => 'ids' ) );
                 $args = array(
    			  'posts_per_page' => 3,
                  'post_type' => 'column',
                  'meta_key' => 'views',
                  'orderby' => 'meta_value_num',
                  'category__and' => $ids
    
                 );
                  $posts = get_posts($args);
                  $i = 0;
                  foreach($posts as $post) :
                  $i++;
                ?>
                
                
    	            <li class="media kanshu">
    	                  <!-- ランキング順位 -->
    	                  <div class="rank"><?php echo $i;?></div>
    	                  <!-- サムネイル -->
    	                  <div class="media-left">
    	                    <a href="<?php the_permalink($posts->ID) ?>"><?php the_post_thumbnail($posts->ID,'thumb'); ?></a>
    	                  </div>
    	                  <!-- 記事 -->
    	                  <div class="media-body">
    	                    <a href="<?php the_permalink($posts->ID) ?>">
    	                      <?php echo $post-> post_title;//mb_substr(strip_tags($post-> post_title),0,40).'...'; ?>
    	                    </a>
    	                  </div>
    
    CG

    (@du-bist-der-lenz)

    投稿(post)での課題だと考え続けていましたが、カスタム投稿タイプですか。

    トピック投稿者 iguigu

    (@iguigu)

    はいカスタム投稿内の記事です。

    posttype column
    taxonomy column_category

    トピック投稿者 iguigu

    (@iguigu)

    デバッグしたところ、$postsになにも入って無いようです

    タクソノミーの場合は、tax_query パラメーターですね。
    https://wpdocs.osdn.jp/関数リファレンス/WP_Query#.E3.82.BF.E3.82.AF.E3.82.BD.E3.83.8E.E3.83.9F.E3.83.BC.E3.81.AE.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF

    'category__and' => $ids,

    'tax_query' => array( array(
    	'taxonomy' => 'column_category',
    	'terms' => $ids,
    	'operator' => 'AND', // 'IN', 'NOT IN', 'AND' 等
    ) ),
    トピック投稿者 iguigu

    (@iguigu)

    ありがとうございます。

    taxonomyの階層の設定をfalseにするとできるのですが、 trueにすると表示されなくなります。
    trueで表示する方法はないのでしょうか?

    トピック投稿者 iguigu

    (@iguigu)

    階層にした場合は、一番下の子タームに属する記事ということになるのですが、、

    ishitaka

    (@ishitaka)

    子孫タクソノミーを含めない(include_children パラメーターを false)ようにすればいいのではないでしょうか。

    'tax_query' => array( array(
    	'taxonomy' => 'column_category',
    	'terms' => $ids,
    	'include_children' => false, // ← 追加
    	'operator' => 'AND',
    ) ),
    トピック投稿者 iguigu

    (@iguigu)

    子孫タクソノミーを含めないとなぜ正常に表示されるのかがよく理解できない自分ですが、

    無事表示ができました!ありがとうございます!

12件の返信を表示中 - 1 - 12件目 (全12件中)
  • トピック「記事が属しているカテゴリのランキング」には新たに返信することはできません。