WordPress – 記事をランダム表示させる(プラグインなし)

更新日:

プラグインなしで記事一覧をランダム表示させるにはテンプレートタグのget_postsを使用することで実装可能です。他にもquery_postsというタグでもランダム表示させることも可能ですが、メインのループに影響を与えてしまう恐れがあるので注意が必要です。

一方のget_postsはメインループに影響を与えず、直接データベースにクエリを作成するので複数のループを使うのであればこちらが無難かと思います。

get_posts()タグを使用してランダムに表示させる

今まで投稿の中からランダムで5件の記事を取得してタイトルを表示させる(ページ遷移対応)設定になっています。

<ul class="rand_contents">
<?php
	$rand_posts = get_posts(array(
		'posts_per_page' => 5,
		'post_type' => 'post',
		'orderby' => 'rand'
	));
	foreach($rand_posts as $post) : setup_postdata($post);
?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php 
	endforeach;
	wp_reset_postdata();
?>
</ul>

パラメーターについて

特定のカテゴリーのみを取得してランダム表示させる

この場合は先程のコードにcategory_nameのパラメータを追加し、表示させたいカテゴリーのスラッグ名を指定するだけです。

下のコードではWordPressというカテゴリーのみを取得してランダムで5件まで表示させる実装になっています。

<ul class="rand_contents">
<?php
	$rand_posts = get_posts(array(
		'posts_per_page' => 5,
		'post_type' => 'post',
		'category_name' => 'wordpress',
		'orderby' => 'rand'
	));
	foreach($rand_posts as $post) : setup_postdata($post);
?>
	<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php 
	endforeach;
	wp_reset_postdata();
?>
</ul>

カテゴリーのスラッグ名の確認方法

管理画面にアクセスして「投稿」→「カテゴリー」に移動します。

そしたらカテゴリー一覧が表示されているので、取得したいカテゴリーのスラッグ名を'category_name' => '',に埋め込みます。下の画像例だと'category_name' => 'css',となります。

'category_name' => 'CSS',だと間違いなので注意してください。必ず、スラッグ名の通り入力。