あなたのWordPressブログには、おそらく数十もの素晴らしい古い投稿があるでしょう。しかし、新しい訪問者は最新のものしか見ることができず、他のすべてはアーカイブに埋もれたままです。
ランダムな投稿を表示することは、それを修正する簡単な方法です。ページを読み込むたびに異なるコンテンツが表示され、古い投稿に新鮮な露出を与え、訪問者がサイトをより長くクリックし続けるようにします。読者がサプライズ記事にジャンプできる「ランダム投稿」ボタンを追加することもできます。これは、古典的なStumbleUponスタイルです。
このチュートリアルでは、WordPressでランダムな投稿を表示する方法と、単一のリンクで訪問者をランダムな投稿にリダイレクトする方法を説明します。

下のクイックリンクを使用して、使用したい方法にジャンプしてください。
WordPressでランダムな投稿を表示する方法
訪問者にサイト内をさらにクリックしてもらうための楽しい方法をお探しですか?ランダムな記事のリストをサイドバー、ページ、またはブログ投稿の直接内部に簡単に追加できます。
一部のチュートリアルでは、テーマのfunctions.phpファイルにカスタムコードを追加することを推奨していますが、WordPress用の無料コードスニペットプラグインであるWPCodeを使用することをお勧めします。
WPCodeにはスマートコードスニペット検証機能が付属しており、一般的なコードエラーがサイトを壊すのを防ぎます。また、カスタマイズを将来性のあるものにするため、カスタムコード機能をすべて失う心配なく、アップデートしたり別のテーマに切り替えたりできます。
まず、無料のWPCodeプラグインをインストールして有効化する必要があります。詳細な手順については、WordPressプラグインのインストール方法に関する初心者向けガイドをご覧ください。
プラグインを有効化したら、WordPress 管理画面のサイドバーから Code Snippets » + Add Snippet ページに移動してください。
そこにアクセスしたら、「カスタムコードを追加(新規スニペット)」オプションの下にある「+カスタムスニペットを追加」ボタンをクリックします。

次に、コードの種類として「PHP スニペット」を選択します。
次に、「カスタムスニペットを作成」ページに移動します。ここで、コードスニペットの名前を入力することから始めます。
このタイトルは参照用であり、サイトのどこにも表示されません。

次に、次のコードを「コードプレビュー」ボックスにコピーして貼り付けます。
<?php
$number_of_posts = 5; // Change this to the number of random posts you want to display.
$title = 'You might also like:'; // This is the title that will be displayed above the list of posts.
$current_post_id = get_the_ID();
$args = array(
'post_type' => 'post',
'orderby' => 'rand',
'posts_per_page' => $number_of_posts,
'post__not_in' => array( $current_post_id ),
);
$random_posts = new WP_Query( $args );
if ( $random_posts->have_posts() ) {
echo '<h3>' . esc_html( $title ) . '</h3>';
echo '<ul>';
while ( $random_posts->have_posts() ) {
$random_posts->the_post();
echo '<li><a href="' . esc_url( get_permalink() ) . '">' . esc_html( get_the_title() ) . '</a></li>';
}
echo '</ul>';
}
wp_reset_postdata();
このスニペットは、ショートコードを配置した場所で5つのランダムな投稿を表示し、訪問者がすでに読んでいる投稿は自動的に除外します。
表示する投稿数を変更するには、スニペットの上部にある$number_of_postsの値を変更します。$title行は、リストの上に表示される「あなたも好きかもしれない:」という見出しを制御します。したがって、そのテキストを編集するか、見出しを付けたくない場合は''に設定してください。
その後、ショートコードを生成するためにスニペットを保存する必要があります。そのため、「スニペットを保存」ボタンをクリックしてください。

その後、「挿入」セクションまでスクロールし、「ショートコード」オプションを選択します。
WPCode が自動生成したショートコードが表示されます。次のステップで使用するため、このショートコードの「コピー」ボタンをクリックしてください。

最後に、一番上までスクロールして、「非アクティブ」スイッチを「アクティブ」に切り替えます。
その後、「更新」ボタンをクリックして変更を保存します。

コードスニペットを保存した後、先ほどコピーしたショートコードを使用して、サイトにランダムな投稿を表示できます。

これを行う方法の詳細については、WordPress ショートコードの追加方法に関するガイドをご覧ください。
ランダムな投稿が変更されずに同じものが表示され続ける場合は、通常、ページキャッシュが保存されたページコピーを提供しています。まずキャッシュをクリアしてページを再読み込みしてください。
それでも変更されない場合は、そのページをキャッシュプラグインのフルページキャッシュから除外してください。
プラグインを使用して訪問者をランダムな投稿にリダイレクトする方法
ランダムな投稿のリストを表示することは、サイドバーや記事の末尾でうまく機能しますが、訪問者はタイトルをスキャンして 1 つを選択する必要があります。ウェブの初期の頃、Stumbleupon はボタンをクリックするだけで新しいコンテンツを発見できるため、私たちはそれを楽しんで使用していました。
リストを表示する代わりに、「ランダム投稿」ボタンまたは「おまかせ」リンクを作成して、訪問者をサイトのランダムな記事にすぐに移動させる機能をご自身のウェブサイトに追加できます。これは探索を促進する楽しい方法であり、特に 404 ページやナビゲーションメニューで効果的です。
無料のRandom Post Pluginの使用をお勧めします。これは、サイトに ?redirect_to=random URL パラメータを追加することで機能します。
プラグインをインストールして有効化し、ナビゲーションメニュー、サイドバーウィジェット、ボタン、またはサイトのその他の場所にリンクを追加するだけです。訪問者はそれをクリックしてランダムな投稿にアクセスできます。
独自のリンクを作成するには、www.example.com をご自身のドメイン名に置き換える必要があります。
使用できるバリエーションは次のとおりです。
- www.example.com/?redirect_to=random&each_once=rewind. 訪問者が同じ投稿を 2 回見ないようにします。このリンクは、サイト上のすべての投稿を見た後、自動的にリセットされます。
- www.example.com/?redirect_to=random&count=10. 最近公開された 10 件の記事の中からランダムな投稿のみを表示します。
- www.example.com/?redirect_to=random&after=1 month ago. 過去 1 か月以内に公開されたランダムな投稿のみを表示します。
- &cache=120. URL の末尾にこれを追加すると、結果が 120 秒間一時的に保存 (キャッシュ) されます。これにより、WordPress サイトの読み込みが速くなります。
たとえば、最近公開された 20 件の記事の中からランダムに選択された投稿を表示するボタンを作成できます。

既製の「ランダム投稿」ボタンをご希望の場合は、プラグインに便利なショートコードも含まれています。
[redirect_to_post_button] ショートコードを投稿、ページ、またはウィジェット領域に簡単に簡単に追加できます。ヘルプが必要な場合は、WordPress でショートコードを追加する方法に関する初心者向けガイドをご覧ください。

コードを使用してWordPressで訪問者をランダムな投稿にリダイレクトする方法
単一目的のプラグインをもう 1 つインストールしたくない場合は、代わりにコードスニペットで同じ「ランダム投稿」リダイレクトを設定できます。
このスニペットは、あなたのウェブサイトに全く新しいURLを作成します。これはexample.com/randomのようになります。
これは既存のページをいじることはなく、投稿を閲覧している読者にも影響しません。リダイレクトは、誰かが手動でその新しい/randomアドレスにアクセスした場合、例えばあなたが設定した「ランダム投稿」ボタンやメニューリンクをクリックした場合にのみ発生します。
したがって、読者がexample.com/randomにアクセスすると、WordPressは完全にランダムに公開済みの投稿を1つ取得し、直接リダイレクトします。
サイトを安全に保つために、以前設定したWPCodeプラグインを使用してコードを追加します。これにより、1文字でも間違って入力してもウェブサイトが壊れたり、管理エリアからロックされたりするのを防ぐことができます。
以前カバーしたのと同じ手順で、WPCodeに新しいPHPスニペットとして貼り付けるだけです。
<?php
function wpb_random_post_rewrite() {
add_rewrite_rule( '^random/?$', 'index.php?random_redirect=1', 'top' );
}
add_action( 'init', 'wpb_random_post_rewrite' );
function wpb_random_post_query_var( $vars ) {
$vars[] = 'random_redirect';
return $vars;
}
add_filter( 'query_vars', 'wpb_random_post_query_var' );
function wpb_do_random_post_redirect() {
if ( get_query_var( 'random_redirect' ) ) {
$random = get_posts( array(
'post_type' => 'post',
'orderby' => 'rand',
'posts_per_page' => 1,
) );
if ( $random ) {
wp_redirect( get_permalink( $random[0]->ID ), 307 );
exit;
}
}
}
add_action( 'template_redirect', 'wpb_do_random_post_redirect' );
このスニペットが307リダイレクトを使用していることに気づいたかもしれません。これはブラウザに、遷移先が一時的であることを伝えます。
これは、ウェブブラウザが読み込み時間を短縮するために、永続的な301リダイレクトをキャッシュするためです。その結果、ブラウザは訪問者を同じ投稿に送り続け、ランダム化を完全に壊してしまいます。
スニペットを保存して有効化したら、WordPressダッシュボードの設定 » パーマリンク設定に移動し、「変更を保存」ボタンをクリックするだけです。
この簡単な手順は「パーマリンクのフラッシュ」として知られています。これにより、WordPressはリンク構造をリフレッシュし、全く新しい/random URLを即座に認識できるようになります。
サイトを高速化するためにWordPressキャッシュプラグインを使用している場合は、/randomを除外URLのリストに追加してください。これにより、訪問者にキャッシュされたページを提供するのではなく、毎回リダイレクトが確実に実行されます。
これでランダムリダイレクトが使用可能になりました。example.com/randomに任意のリンク(ボタン、ナビゲーションメニュー項目、サイドバーウィジェット、投稿内のテキストリンクなど)をポイントできます。
example.comを自分のドメイン名に置き換えるのを忘れないでください。
この記事が、WordPressでランダムな投稿を表示する方法を学ぶのに役立ったことを願っています。また、WordPressで投稿を簡単に並べ替える方法に関する初心者向けガイドや、WordPressでプライベート投稿を作成する方法のチュートリアルもご覧ください。
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。

デヨ・オロボヨ
ランダムな投稿を表示するためにいくつかの方法を試しましたが、このカスタムクエリメソッドほどうまく機能したものはありませんでした。このチュートリアルは理解しやすく、プロセスをわかりやすくするための例やコードスニペットを提供してくれたのが気に入っています。あなたの専門知識のおかげで、多くの時間とフラストレーションを節約できました。これからも知識を共有してください!
イジー・ヴァネック
私の理解では、コードには投稿のアイキャッチ画像が含まれていないとのことですが、アイキャッチ画像付きで投稿を表示するオプションはありますか?
WPBeginnerサポート
ブロックエディターで最新の投稿ブログを確認することをお勧めします。
管理者
イジー・ヴァネック
アドバイスありがとうございます。はい、それでうまくいきます。Elementorと時々Seed Prodを使用しています。Gutenbergは全く使わないので、このオプションは思いつきませんでした。Gutenbergにそのようなブロックがあることを知りませんでした。ヒントをありがとうございます。
クリス・スミス
固定投稿が常にランダム投稿に表示されます。このコードから固定投稿を除外する方法はありますか?
WPBeginnerサポート
これを実現するには、コードを調整するよりも、2番目の方法のプラグインを使用することをお勧めします。
管理者
マイケル
毎回ランダム化するのではなく、一定期間結果をキャッシュする簡単な方法はありますか?例えば、DBへの呼び出し負荷を軽減するために、24時間ごとに更新するなど?
WPBeginnerサポート
その機能については、利用可能かどうかプラグインのサポートに確認することをお勧めします。
管理者
マービン・デュル
ウェブサイトのPHP内の投稿内ではなく、特定の場所にショートコードを追加しようとしましたが、ランダム投稿セクションは表示されず、テキスト「[wpb-random-posts]」のみが表示されました。
どうすればいいですか?
WPBeginnerサポート
ブロックエディターを使用している場合は、ショートコードブロックを使用して追加していることを確認してください。
管理者
ゼイネップ
コードは問題なく動作しました。WordPressサイトの最初のページをindex.htmlに変更しました。htmlページで[wpb-random-posts]を実行するにはどうすればよいですか?私の英語は少し苦手ですが、理解していただけると幸いです。
WPBeginnerサポート
WordPress ショートコードを機能させるには、そのページが WordPress のページである必要があります。
管理者
エル
これをどのようにスタイリングしますか?PHPのスタイリングは初めてなので、どのようにデザインを制御すればよいか混乱しています。
WPBeginnerサポート
追加したいスタイリングによって、何をする必要があるかが決まります。ターゲットにするものを得るために、HTMLコードにクラスを追加できます。
管理者
マリア・クリスティアーネ・アモリム
こんにちは!リストでこれはできますか?
WPBeginnerサポート
それが何を意味するのか、明確にする必要があります。
管理者
ロブ・パッケナム
役立つ記事をありがとうございます。
質問があります。私のWordPressサイトのページには、ランダムな投稿(抜粋)ウィジェットを含むサイドバーがあります。
問題は、Googleがページをインデックス化し、ランダムな投稿の抜粋をページのコンテンツとして「認識」してしまうことです。そのため、Google検索では、ページのメインコンテンツではなく、ランダムな投稿の抜粋のいずれかが検索語句に一致したという理由だけで、ページが表示されることがあります。
しかし、ユーザーがGoogle検索結果のリンクをクリックすると、サイドバーに異なるランダム投稿抜粋が表示されたページが表示され、テキストが一致する投稿抜粋は表示されません。そのため、ユーザーには悪い検索のように見えます。
できれば、ランダムな投稿の抜粋をGoogleインデックスから除外したい、つまりGoogleに表示されないようにしたいのですが、それは不可能のようですね(?)。
何か提案があれば、ぜひお聞かせください!ありがとうございます。
ジュン・エンリケス
これを試したところ、サイトが壊れてしまいました。リセットするにはどうすればよいですか?
HTTPエラー500
助けてください
ありがとう
6月
イン
これを共有してくれて本当にありがとう。ランダム投稿のために別のプラグインを使っていましたが、それはもう機能しませんでした。そしてあなたのサイトを見つけ、プラグインをインストールしました。それは驚くほどうまく機能します。
リサ
こんにちは、この役立つチュートリアルをありがとうございます!
特定のカテゴリにあるランダムな投稿を表示するためのコードを追加するにはどうすればよいですか?私のテーマにはサイドバーが表示されないため、プラグインを使用できません。また、各記事の下にランダムな投稿が表示されますが、すべてのカテゴリの投稿が含まれて表示されます。テーマのコードを確認して「post_category」=>「name-of-the-category」を追加しようとしましたが、うまくいきませんでした。何かアイデアはありますか?
ラフ
こんにちは!毎週または指定した時間にランダムな投稿を変更したい場合はどうなりますか?例えば、ランダムな投稿のセットを表示した場合、7日間または指定した時間まで変更されないようにするにはどうすればよいですか?よろしくお願いします!
アビマニュ・カシャップ
本当にありがとうございます。ランダムな投稿を表示できるようになりました。投稿数を1に変更して、ランダムな投稿を1つ表示しました。もっと良い方法はありますか?
また、投稿タイプではなく変数を使用し、ショートコードを配置する場所(例:[wpb-random-posts('post')])に入力する方法を知りたいです。
これを達成するにはどうすればよいですか?
デベンダー
このコードを共有してくれてありがとう。とても参考になります……。
ネイト
投稿を順序付け => ‘rand’ に設定するのは半端な対策です。確かに投稿は「ランダムに」表示されますが、前述の DI SEKITAR が言っているように、サイトを訪れるたびに同じランダムな投稿が表示されるのであれば、1つのランダムな投稿を表示することに何の意味があるのでしょうか?
ネイト
「orderby」と言うつもりでした…スペルチェックされました
スメーサン
すみません、その文字列は機能しませんでしたが、文字列をグローバルにして動作するようにしました。
global $string;
マレーネ・ローズ・ショー
この素晴らしいチュートリアルをありがとうございます。ショートコードを取得して、サイドバーではなくページ内のコンテンツの下にランダムな投稿を表示する方法はありますか?
キャサリン
JAYKAY
現在の投稿を除外するには
‘post__not_in’ => array(get_the_id())
クエリに
したがって、引数は次のようになります。
$args = array( 'post_type' => 'post', 'orderby' => 'rand', 'posts_per_page' => 5, 'post__not_in' => array(get_the_id()), );
JAYKAY
このコードで正常に動作します。
KATHERINEさん、ありがとうございます
di sekitar
本当に素晴らしい情報ですね。
あなたが言及したプラグインを使ってみましたが、大きな疑問があります。
サイトを訪れる訪問者やデバイスごとに異なるランダムな投稿を作成するにはどうすればよいですか?
他のノートパソコンやスマートフォンでサイトにアクセスしようとしましたが、それら2つのデバイスからのランダム投稿は同じでした。
JayKay
こんにちは、
Advanced Random Posts Widget は非常に良いプラグインですが、問題があります。
ランダム投稿を表示する際に、現在の投稿/アクティブな投稿を除外するにはどうすればよいですか?
これは修正可能でしょうか?
方法2のコードでも問題は同じです。
ハリー・ストッダート
「オフセット」変数を使用して、最新のX件の投稿をスキップします。
カリル・シラ
初心者ですが、WordPressを学ぶために必要な教材リストは何ですか?
アーム・クレックス
PC、Wi-Fi、そして献身。これだけで最近は何でも学べます。
ガウラヴ・クラナ
これ、ありがとう。ずっと考えていました。デフォルトでは、最新の投稿がホームページ自体に表示されるからです。これ、ありがとう。このプラグインを間違いなく使用します。