カテゴリーでの関連記事表示をタグで分岐させて同じタグのページを関連表示させてみた。
同じカテゴリーの記事を関連記事として表示
当サイトの記事(投稿)ページで表示される関連記事は、同じカテゴリーの記事を6件、ランダムに抽出して表示させています。
下記のように、同じカテゴリーの記事を抽出して表示しています。
ファイル名: relatedposts-cat.php
<?php //同カテゴリーから関連記事をランダムに呼び出す foreach((get_the_category()) as $cat){ $category_id=$cat->cat_ID; $cat_ct= $cat->category_count; }?> <?php if($cat_ct > 1):?> <h3>同ジャンル・関連ページ</h3> <?php $posts=get_posts('category='.$category_id.'&numberposts=6&orderby=rand&exclude='.$post->ID); ?> <?php if($posts):foreach($posts as $post):setup_postdata($post); ?> ここに表示用のコードを記述 <?php endforeach;endif;?> <?php endif;?> <?php wp_reset_postdata(); ?>
ほとんどのページでは、上記の関連記事の表示で問題無かったのですが、「ドロップシッピング用にテーマをカスタマイズ」のページではドロップシッピング関連記事だけを表示することにしました。
同じタグを持つ記事を関連記事として表示
同じタグ(ここでは「ドロップシッピング」が同じタグになります。)を持つ記事を関連記事として表示させてみました。
下記のように、同じタグを持つ記事を抽出して表示しています。
ファイル名: relatedposts-tag.php
<?php //タグ情報から関連記事を新しい順に呼び出す $tags = wp_get_post_tags($post->ID); $tag_ids = array(); foreach($tags as $tag): array_push( $tag_ids, $tag -> term_id); endforeach ; $args = array( 'post__not_in' => array($post -> ID), 'posts_per_page'=> 8, 'tag__in' => $tag_ids, 'orderby' => 'date', ); $query = new WP_Query($args); ?> <?php if( $query -> have_posts() && !empty($tag_ids) ): $cnt=1; ?> <?php while ($query -> have_posts()) : $query -> the_post(); ?> <?php if($cnt == 1): ?> <h3>同ジャンル・関連ページ</h3> <?php endif; ?> ここに表示用のコードを記述 <?php $cnt++; ?> <?php endwhile; endif; ?> <?php wp_reset_postdata(); ?>
ドロップシッピング関連ページだけ、タグを持つ記事を関連記事を適用
single.phpで、「ドロップシッピング」というタグを有するペーjだけに、「同じタグを持つ記事を関連記事」を表示させることにします。
他のページには、同じカテゴリーの記事を関連記事として表示させます。
こんな時に便利な関数が「has_tag」ですね。
single.phpで「関連記事」を表示させたい箇所に、次の様に記述します。
<?php if ( has_tag( 'ドロップシッピング' ) ): ?> <?php get_template_part('relatedposts','tag'); ?> <?php else: ?> <?php get_template_part('relatedposts','cat'); ?> <?php endif; ?>
これで、「ドロップシッピング」というタグをもつページだけに、同じタグを持つ記事を関連記事として表示させることが出来ました。