今回はWordPressで関連記事をランダムで表示させる方法を紹介します。
関連記事をランダムで表示させる方法
関連記事をランダムで表示させる場合はサブループを書きます。メインループではランダムで表示させることができないからです。
コードはこんな感じ。
<?php
$args = array(
'post_type' => 'post',// 投稿タイプを指定
'orderby' => 'rand',// ランダムで表示(ここ!)
'posts_per_page' => 6,// 表示する記事数
);
$post_query = new WP_Query( $args );
if ( $post_query->have_posts() ) :
while ( $post_query->have_posts() ) : $post_query->the_post();
?>
<!-- ここにhtml -->
<?php endwhile;
else:
?>
<p>記事は見つかりませんでした</p>
<?php
endif;
wp_reset_postdata();
?>
重要なのは'orderby' => 'rand'
です。ここで記事の順番をランダムにします。
他の部分は普通のサブループでokです。
現在表示している記事は含めない
関連記事の中に現在表示している記事は表示させたくないということもあります。
その場合は以下のコードになります。
<?php
$args = array(
'post_type' => 'post',// 投稿タイプを指定
'orderby' => 'rand',// ランダムで表示
'posts_per_page' => 6,// 表示する記事数
'post__not_in' => array($post->ID)// 現在表示している記事を除外(ここ!)
);
$post_query = new WP_Query( $args );
if ( $post_query->have_posts() ) :
while ( $post_query->have_posts() ) : $post_query->the_post();
?>
<!-- ここにhtml -->
<?php endwhile;
else:
?>
<p>記事は見つかりませんでした</p>
<?php
endif;
wp_reset_postdata();
?>
重要なのは'post__not_in' => array($post->ID)
ですね(post__notの部分はアンダーバー2本だよ)
'post__not_in'
は指定したIDの投稿は取得しないというコードです。
WordPressのグローバル変数$post
から現在表示している記事のIDを取得し、渡すことで現在の記事を含めないようにできます。
まとめ
関連記事はサイトの回遊率を高めるために重要ですよね。
何かと使う機会が多いと思いますが、コードはとてもシンプルなのでぜひ使ってみてくださいね!