Blog

【WordPress】posts_per_pageで一覧をランダム表示する方法

2016/04/18

カスタム投稿 Wordpress

以前、「【WordPress】taxonomy.phpで一覧をランダム表示」という記事を書きましたが、
記事の中で使用しているquery_postsについて、非推奨になっているようです。

そこで、別の方法でランダム表示をすることにしました。

参考サイト
[WordPress]pre_get_postsを使いこなす!pre_get_posts使い方まとめ

functions.php

//タクソノミー一覧の表示数指定
function change_posts_per_page($query) {
 /* 管理画面,メインクエリに干渉しないために必須 */
 if( is_admin() || ! $query->is_main_query() ){
     return;
 }
 
 /* カテゴリーページの表示件数を50件にする */
 if ( $query->is_tax() ) {
     $query->set( 'posts_per_page', '50' );
     return;
 }
 
}
add_action( 'pre_get_posts', 'change_posts_per_page' );

//タクソノミー一覧の並び順をランダムに
function change_posts_query( $query ) {
  if( is_tax() ) {
    $query->set('orderby', 'rand');
    // orderby のように スペース区切りで複数指定してみる
    $query->set('order', 'ASC DESC');
  }
}
add_action('pre_get_posts', 'change_posts_query');

ここで重要なのが、posts_per_pageを使用する場合、
管理画面も影響するため、

function change_posts_per_page($query) {
 /* 管理画面,メインクエリに干渉しないために必須 */
 if( is_admin() || ! $query->is_main_query() ){
     return;
 }

を必ず記述します。

taxsonomy.phpに記述していた

<?php query_posts($query_string . "&orderby=rand"); ?>

は削除します。

query_postsを使わず、posts_per_pageを使う場合には、
functions.phpに記述をするため、若干敷居が高いですが、
まずは簡単なところから始めてみました。

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ