【WordPress】おすすめ記事をランダムで表示する方法

2017/08/27
  • WordPress
【WordPress】おすすめ記事をランダムで表示する方法

今回は投稿した記事の中でおすすめ記事を指定して、その中からランダムで表示する方法をご紹介したいと思います。

設定方法

管理画面の設定

まずは、おすすめ記事を指定するためのカスタムフィールドを用意しましょう。
今回は「Advanced Custom Fields」を使用させて頂きたいと思います。
プラグインをインストール後、カスタムフィールドを作成してください。
名前は任意で設定頂き、フィールドタイプに「真/偽」を設定しましょう。

任意のカスタム投稿の中でおすすめ記事を指定したい場合は、カスタムフィールドを作成する際に以下部分を変更しましょう。

設定後、該当のおすすめ記事の先ほど設定したカスタムフィールドのチェックを付けておきます。

管理画面側での設定はこれで終了です。

表示側の設定

次は表示側の設定ですが、おすすめ記事を表示したい位置で以下条件を指定して記事情報を取得してください。

<?php 
  $args = array(
     'post_type' => array('post'),
     'post_status' =>'publish',
     'orderby' => 'rand',
     'posts_per_page' => '1',
     'meta_query' => array(
       array(
         'key'=> 'random_post',
         'value'=> true,
        'compare'=>'='
       )
     ),
  );
  $the_query = new WP_Query($args); ?>
?>

この中で気にするポイントは「post_type」、「orderby」、「posts_per_page」、「meta_query」です。
「post_type」の値が「post」になっていますが、任意のカスタム投稿を指定する場合は、そのタクソノミーを指定して下さい。
「orderby」の値を「rand」と指定していますが、これはランダム表示にするための指定です。
「posts_per_page」の値は、表示したい件数になりますので、任意の数値に変更してください。
「meta_query」の中で、「key」という項目がありますが、こちらには最初に登録した「カスタムフィールド」のフィールド名を指定してください。そのカスタムフィールドにチェックが付いたものだけ検索対象とします。

後は、以下のような形で記事の任意情報を出力してください。

   <?php 
     if($the_query->have_posts()): 
       while ($the_query->have_posts()) : $the_query->the_post(); ?>

      <?php echo the_title(); ?>

    <?php endwhile; endif; ?>

すると、先ほど指定したおすすめ記事がランダムで表示されるようになります。