WordPressで投稿IDを指定した記事をランダム表示

WordPress

WordPressで複数の投稿ID(記事ID)を指定した記事をランダムで表示させるやり方

個人的にやってみたかったので備忘録。WordPressで自分が作った関数の引数に複数の投稿ID(記事ID)を指定して、その記事たちをランダム順に並べて表示させるやり方です。投稿IDを変えるだけで表示される記事も変わるので管理が楽になります。

[ads_center]

WP_Queryを使うやり方

やり方は、WP_Queryを使って投稿IDの配列から新しくループを作成していきます。$post_idsに自分が表示したい記事の投稿IDを指定するようにします。

自分で作ったループを初期状態に戻すために、wp_reset_postdata()も忘れずに記述しておきます。

function post_id_random($post_ids) {
    $args = array(
        'post__in' => $post_ids,
        'orderby' => 'rand'
    );
    $post_ids_query = new WP_Query($args);

    if($post_ids_query->have_posts()) {
        while($post_ids_query->have_posts()) {
            $post_ids_query->the_post();
            echo '<ul>';
            echo '<li><a href="';
            echo the_permalink();
            echo '">';
            echo the_title();
            echo '</a></li>';
            echo '</ul>';
        }
        wp_reset_postdata();
    } else {
        echo '<p>該当記事がない場合はここが表示</p>';
    }
}

そして、表示したい場所に以下のように記述します。ここでは、例として「10, 11, 12」の投稿IDを指定しています。

$post_ids = array(10,11,12);
post_id_random($post_ids);

これで、投稿IDが10、11、12の3つの記事をランダムの順番で並べて表示させることができます。

これがどういった時に役立つのかというと、例えばオススメ記事として自分が見せたい記事を複数並べたい、なんて時に使えます。ちょっと変更したくなったら投稿IDを変えるだけなので比較的管理も楽になるはずです。

以下のサイトが参考になりました。

ちなみに、投稿IDではなくて投稿スラッグを指定して表示させたい場合は以前書いた以下の記事をどうぞ。

WordPressのログイン時のツールバーWordPressでログイン中に上部ツールバーを表示・非表示にする設定方法前のページ

背景に複数の画像を設定してパララックスのスクロールを実装できるjQueryプラグイン「qpScroll」次のページqpScroll

関連記事

  1. WordPressのログイン時のツールバー
  2. Tetris

    WordPress

    レスポンシブに対応したmasonry風のフリーのWordPressテーマ「Tetris」

    Tetrisという素敵なフリーのWordPressテーマを見つけたので…

  3. WordPressでパンくずリストを設置

    WordPress

    WordPressの自動バックグラウンド更新(アップグレード)の設定について

    先日、WordPressのアップグレードがあったので後でやろう思ってい…

  4. WordPressのログイン時のツールバー

    WordPress

    WordPressでタグ一覧ページの作り方

    WordPressでタグ一覧ページを作るやり方をご紹介します。サイトで…

  5. WordPressのログイン時のツールバー

    WordPress

    WordPressで現在のページのタグ名を出力するにはsingle_tag_titleを使う

    先日「WordPressで現在のページのカテゴリー名を出力するにはsi…

最近の記事

  1. CAR-HLD12BK
  2. OWL-LPB6701LA
  3. cheero Power Mountain mini 30000mAh CHE-110

アーカイブ

PAGE TOP