親カテゴリーをもとに関連記事を表示する方法
-
現在下記のテーマを設定しています。
http://lionmedia.fit-jp.com/matome/テーマでは、投稿記事の下にタグをもとに関連記事が表示されるようになっています。
カテゴリーをもとに関連記事を表示させる場合のコードを教えてください。記事のカテゴリーは、A>B>Cと3段階で設定しています。
親カテゴリーの「A」をもとに関連記事を表示させたいです。個別投稿(single.php)にあった下記コードが関連記事に関するコードです。
<?php if (get_option('fit_post_related') != 'value2' ) : ?> <!-- 関連記事 --> <?php // 総件数 if ( get_option( 'fit_post_relatedNumber' ) ) { $max_post_num = get_option( 'fit_post_relatedNumber' ); } else { $max_post_num = 3; } // 現在の記事にタグが設定されている場合 if ( has_tag() ) { // 1.タグ関連の投稿を取得 $tags = wp_get_post_tags( $post->ID ); $tag_ids = array(); foreach ( $tags as $tag ): array_push( $tag_ids, $tag->term_id ); endforeach; $tag_args = array( 'post__not_in' => array( $post->ID ), 'tag__not_in' => $tag_ids, 'posts_per_page' => $max_post_num, 'tag__in' => $tag_ids, 'orderby' => 'rand', ); $rel_posts = get_posts( $tag_args ); // 総件数よりタグ関連の投稿が少ない場合は、カテゴリ関連の投稿からも取得する $rel_count = count( $rel_posts ); if ( $max_post_num > $rel_count ) { $categories = get_the_category( $post->ID ); $category_ID = array(); foreach ( $categories as $category ): array_push( $category_ID, $category->cat_ID ); endforeach; // 取得件数は必要な数のみリクエスト $cat_args = array( 'post__not_in' => array( $post->ID ), 'posts_per_page' => ( $max_post_num - $rel_count ), 'category__in' => $category_ID, 'orderby' => 'rand', ); $cat_posts = get_posts( $cat_args ); $rel_posts = array_merge( $rel_posts, $cat_posts ); } } else { // 現在の記事にタグが設定されていない場合 $categories = get_the_category( $post->ID ); $category_ID = array(); foreach ( $categories as $category ): array_push( $category_ID, $category->cat_ID ); endforeach; // 取得件数は必要な数のみリクエスト $cat_args = array( 'post__not_in' => array( $post->ID ), 'posts_per_page' => ( $max_post_num ), 'category__in' => $category_ID, 'orderby' => 'rand', ); $cat_posts = get_posts( $cat_args ); $rel_posts = $cat_posts; } echo '<aside class="related">'; echo '<h2 class="heading heading-primary">関連する記事</h2>'; // 1件以上あれば if ( count( $rel_posts ) > 0 ) { echo '<ul class="related__list">'; if ( !$myAmp && is_active_sidebar( 'related-ad' ) ) { dynamic_sidebar( 'related-ad' ); } foreach ( $rel_posts as $post ) { setup_postdata( $post ); // thumbnailサイズの画像内容を取得 $thumbnail_id = get_post_thumbnail_id(); $thumb_img = wp_get_attachment_image_src( $thumbnail_id, 'thumbnail' ); // サムネイル画像出力 $thumb_src = $thumb_img[ 0 ]; $thumb_width = $thumb_img[ 1 ]; $thumb_height = $thumb_img[ 2 ]; ?> <li class="related__item"> <a class="related__imgLink" href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"> <?php if(has_post_thumbnail()) : ?> <?php if($myAmp){echo '<amp-img layout="responsive"';}else{echo '<img';} ?> src="<?php echo $thumb_src; ?>" alt=" <?php the_title(); ?> " width="<?php echo $thumb_width; ?>" height="<?php echo $thumb_height; ?>" > <?php if($myAmp){echo '</amp-img>';}?> <?php else :?> <?php if($myAmp){echo '<amp-img layout="responsive"';}else{echo '<img';} ?> src="<?php echo get_template_directory_uri(); ?>/img/img_no_thumbnail.gif" alt="NO IMAGE" width="160" height="160" > <?php if($myAmp){echo '</amp-img>';}?> <?php endif; ?> </a> <h3 class="related__title"> <a href="<?php the_permalink(); ?>"> <?php the_title(); ?> </a> <?php if (get_option('fit_post_time') != 'value2' ) : ?> <span class="icon-calendar"> <?php the_time('Y.m.d'); ?> </span> <?php endif; ?> </h3> <p class="related__contents"><?php echo mb_substr(get_the_excerpt(), 0, 75); ?>[…]</p> </li> <?php } echo '</ul>'; } else { echo '<p class="related__contents related__contents-max">関連記事はありませんでした</p>'; } echo '</aside>'; ?> <?php wp_reset_postdata();?> <!-- /関連記事 --> <?php endif; ?>
5件の返信を表示中 - 1 - 5件目 (全5件中)
5件の返信を表示中 - 1 - 5件目 (全5件中)
- トピック「親カテゴリーをもとに関連記事を表示する方法」には新たに返信することはできません。