
FASTCODING-Vietnamのバックエンドエンジニア、ジアンです。
Webサイトを見ていて「ランダムに記事を読み込む」ページを見たことはありますか?
具体的にはWebサイトを表示すると
最初はりんごに関する記事が1番上に表示されていたのに
同じページを更新してみたら、次はみかんに関する記事が1番上に来ている

このようにページを再読み込みしたら、毎回違う記事が表示されるというものです。
この機能は投稿数が多いブログなどに適しています。
ページを更新すると毎回ランダムに違う記事が表示されるので
記事に対しての読みムラが少なくなり、
まんべんなく色々な記事をユーザに読んでもらうことができます。
今回はWordPressでこの機能を実装してみたいと思います。
WordPressで記事をランダムに表示させる方法
まずカスタムページテンプレートを作ります。
下記の2パターン作成したので、お好きなほうを使用してください。
#1 : WordPressテーマ内に直接記述する場合
#2 : ショートコードとして使う場合
#1 : WordPressテーマ内に直接記述する場合
[↓] 記事を表示させたいphpファイル :
<?php query_posts(array('orderby' => 'rand', 'showposts' => 5));
if (have_posts()) :
while (have_posts()) : the_post(); ?>
/* 繰り返し表示させる部分 */
<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<?php the_content(); ?>
<?php endwhile; endif; ?>
「’orderby’ => ‘rand’」で記事のランダム表示を設定し、
「’showposts’ => 5」で記事の表示件数を制御しています。
#2 : ショートコードとして使う場合
WordPressの記事のランダム表示は簡単なWP_Queryのループです。
ショートコードのlimitのパラメータに「5」を設定していますが、
これはランダム記事を5つだけを表示するという意味です。
このパラメータを変更することで記事の表示件数を変更できます。
[↓] 固定ページ内で使用するショートコード :
[random_posts limit=5]
[↓] functions.php :
<?php
function random_posts($attrs = array()){
ob_start();
$limit = !empty($attrs['limit']) ? $attrs['limit'] : 0;
?>
<?php
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'orderby' => 'rand', // 記事のランダム表示設定
'posts_per_page' => $limit,
);
$posts_query = new WP_Query( $args );
if ($posts_query->have_posts()) :
while ($posts_query->have_posts()) : $posts_query->the_post(); ?>
/* 繰り返し表示させる部分 */
<div class="post-item">
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
<?php echo get_the_excerpt(); ?>
</div>
<?php endwhile;
endif; ?>
<?php
return ob_get_clean();
}
add_shortcode('random_posts','random_posts');
?>
「繰り返し表示させる部分」の中にはタイトルと本文だけ入れてありますが
HTMLを編集すれば、任意のコンテンツを繰り返し表示させることができます。
いかがでしたか?
WordPress構築案件でお困りでしたらFASTPRESSまでお気軽にご相談ください。

