WordPressでトップページに表示させている全記事をランダムで表示する方法「pre_get_posts」使用

WordPressでギャラリーサイトなどを作る時は「トップページ(ホーム)にある記事はランダムで表示順を変えたいな~」と思いました。方法を調べるといろいろ見つかりますが、「pre_get_posts」を使う方法が現在では推奨されているようです。

 

というわけで、「pre_get_posts」に書いてあるサンプルコードをちょっと変更するとできます。

 

サンプルコード

以下のコードを、ご使用中のテーマフォルダにある「functions.php」ファイルに追記します。

<?php
function random_posts( $query ) {
 if ( $query->is_home() && $query->is_main_query() ) {
  $query->set( 'orderby', 'rand' );
 }
}
add_action( 'pre_get_posts', 'random_posts' );
?>

 

やっていること

表示しているページがトップページ(ホーム)で、メインクエリだった場合、「$query->set」にランダム表示させるようにパラメータを設定をしています。なので、応用としては「$query->set」のパラメーターを変更すれば「表示件数の変更」や「特定のカテゴリーは除外する」などもできますね。設定できるパラメーターは「WP Query」が参考になります。

 

 

参考リンク

 

プラグイン API/アクションフック一覧/pre get posts – WordPress Codex 日本語版

関数リファレンス/is main query – WordPress Codex 日本語版

関数リファレンス/WP Query – WordPress Codex 日本語版

著者:bouya Imamura