投稿が多くなってくると過去の投稿が埋もれてしまうので、サイト訪問者にいろいろ投稿を見てもらうためにも、ランダムで投稿を表示することは1つの戦略です。
この「ランダムで投稿を表示する」こと事態は難しいことではなく、プラグインを使わずとも簡単に実装できます。
この記事では条件に合う投稿を取得し、ランダムで表示させる方法を記述しました。
目次
投稿をランダムで表示させる
まず下記コードが投稿をランダムで表示させるときに雛形となるコードになります。
<?php
$args = array(
'post_type' => 'post', // 投稿タイプ
'post_status' => 'publish', // 公開しているもの
'orderby' => 'rand', // ランダム順
'posts_per_page' => 5, // 5件取得
);
$random_posts = new WP_Query($args);
if ($random_posts->have_posts()) :
while ($random_posts->have_posts()) : $random_posts->the_post();
?>
<!-- ここにループ内の記述 -->
<?php endwhile;
endif;
wp_reset_query(); ?>
今回は例として下の画像の様に、カテゴリーが WordPress のものを1件だけランダムで表示させてみました。
そのコードが以下のようになります。
<?php
$args = array(
'post_type' => 'post', //投稿タイプ
'category_name' => 'wordpress', // カテゴリーがWordPressのもの
'post_status' => 'publish', // 公開しているもの
'orderby' => 'rand', // ランダム順
'posts_per_page' => 1, // 1件取得
);
$random_posts = new WP_Query($args);
if ($random_posts->have_posts()) :
while ($random_posts->have_posts()) : $random_posts->the_post();
?>
<div class="random-post">
<a href="<?php the_permalink(); ?>" class="random-post-img">
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail('large'); ?>
<?php else : ?>
<img src="<?php echo get_template_directory_uri() ?>/images/no-image.png" alt="no-image">
<?php endif; ?>
</a>
<h5>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</h5>
</div>
<?php endwhile;
endif; ?>
<?php wp_reset_query(); ?>
WP_Query()
で指定するパラメータを変えることで、取得する記事を条件指定することできます。
WP_Query()で取れるパラメータは↓コチラを参考にしてください。