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 日本語版
このページを共有する