ショートコードとカスタムテンプレートを使用し、関連記事を表…
- 2015/12/07
- 2016/04/02
- WordPress
- カスタムテンプレート, 関連記事, ショートコード, WordPress

今見ている記事に関連する記事(同じカテゴリ)を表示する方法ですが
single.phpに直接書き込んでも良いが、ゴチャゴチャするのでカスタムテンプレートを作成し、
ショートコードで呼び出す方法になります。
1:カスタムテンプレートを作成する
例では「related_post.php」というカスタムテンプレートを作成し、
「inc」というフォルダの中に入れた場合です。
related_post.php
<h3>関連記事</h3> <?php $categories = get_the_category($post->ID); $category_ID = array(); foreach($categories as $category): array_push( $category_ID, $category -> cat_ID); endforeach ; $args = array( 'post__not_in' => array($post -> ID), 'posts_per_page'=> 6, //取得する記事の数 'category__in' => $category_ID, //同じカテゴリの記事を取得する //'orderby' => 'rand',コメントアウトを外すとランダム表示 ); $query = new WP_Query($args); if( $query -> have_posts() ): while ($query -> have_posts()) : $query -> the_post(); ?> <!--ここは自由に体裁を整えてください。--> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail(); ?></a><!--サムネイルを表示--> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><!--タイトルを表示--> <?php echo mb_substr(strip_tags($post->post_content), 0, 20); //この場合20文字を抜粋?><!--抜粋文を表示--> <a href="<?php the_permalink(); ?>">記事を読む</a><!--記事を読む、続きはコチラなどの文言--> <!--//ここは自由に体裁を整えてください。--> <?php endwhile; endif; wp_reset_postdata(); ?><!--忘れずにリセットする-->
2:ショートコードの設定
functions.php
<?php function related_post() { ob_start(); get_template_part('inc/related_post'); //この場合有効にしているテーマの"inc"というフォルダのrelated_post.phpを読み込む return ob_get_clean(); } add_shortcode('related_post', 'related_post'); //第一引数にショートコード名、第二引数に関数名を指定 ?>
3:ショートコードの呼び出し
single.php
<?php echo do_shortcode('[related_post]'); ?>
コピーして使うときは大かっこを半角に直してください。