前提・実現したいこと
プラグインを使わず、表示中の投稿ページと同じカテゴリーの投稿を一覧で表示させたいです。
発生している問題
表示中のカテゴリーとは関係ない投稿が表示されます。
該当のソースコード
PHP
1<ul class="related-post__parts related-post-list"> 2 3 <?php 4 $categories = get_the_category($post->ID); 5 6 $category_ID = array(); 7 foreach ($categories as $category) : 8 array_push($category_ID, $category->cat_ID); 9 endforeach; 10 11 $args = array( 12 'post__not_in' => array($post->ID), 13 'posts_per_page' => 3, 14 'category__in' => $category_ID, 15 'orderby' => 'DESC' 16 ); 17 18 $query = new WP_Query($args); 19 if ($query->have_posts()) : 20 while ($query->have_posts()) : 21 $query->the_post(); 22 ?> 23 24 <li class="related-post-list__item blogRelation-card"> 25 <a href="<?php the_permalink(); ?>" class="blogRelation-card__link"> 26 <div class="blogRelation-card__img-box-wrapper"> 27 <div class="blogRelation-card__img-box"> 28 <?php 29 if (has_post_thumbnail()) : 30 the_post_thumbnail('post-thumbnail', array('class' => 'blogRelation-card__img', 'alt' => the_title_attribute('echo=0'))); 31 else : 32 ?> 33 <img class="blogRelation-card__img" src="<?php echo get_template_directory_uri(); ?>/assets/images/common/no-image.jpg" alt="" /> 34 <?php endif; ?> 35 </div> 36 </div> 37 <div class="blogRelation-card__body"> 38 <h3 class="blogRelation-card__title"> 39 <?php the_title(); ?> 40 </h3> 41 </div> 42 </a> 43 </li> 44 45 <?php endwhile; ?> 46 <?php else : ?> 47 <p>関連記事はありません</p> 48 <?php endif; ?> 49 <?php wp_reset_query(); ?> 50 51</ul>
試したこと
① 表示中の投稿ページのカテゴリーIDの表示はできました。→画面に表示されたカテゴリーIDはしっかり1つ(152)のみ表示されました。
PHP
1① 2<?php 3$cat = get_the_category(); 4$cat = $cat[0]; 5$cat_id = $cat->cat_ID; 6?> 7 8<?php echo $cat_id; ?>
② 表示中の投稿ページのカテゴリーIDを指定して、カテゴリーのタイトルのみの表示もできました。→カテゴリーが同じ記事が1つあるので計2つ表示されました。
PHP
1② 2<?php $posts = get_posts('numberposts=30&category=152'); ?> 3<?php if($posts): foreach($posts as $post): setup_postdata($post); ?> 4 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 5<?php endforeach; endif; ?>
③表示中の投稿ページと同カテゴリーの投稿をタイトルのみ表示→これはなぜか29記事分のタイトルが表示されました。
PHP
1<?php 2$cat = get_the_category(); 3$cat = $cat[0]; 4$cat_id = $cat->cat_ID; 5?> 6 7<?php $posts = get_posts('numberposts=30&category=$cat_id'); ?> 8<?php if($posts): foreach($posts as $post): setup_postdata($post); ?> 9 <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 10<?php endforeach; endif; ?>
補足情報
開発環境はLocalです。
WP Migrationでテスト環境にアップしてみましたが同様の結果でした。
至らない点があるかと思いますが、
ご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/22 07:07
2021/05/22 08:57
2021/05/22 09:30