WordPress:記事をランダムに表示してページナビ(WP-PageNavi)では固定する方法
ページャーの2ページ目以降も全記事からランダムなので、確率的に 1ページ目と同じ記事が表示されると困ります。 そこでページャーではランダムを固定する方法を紹介します。 下記のコードをfunctions.phpに書きます。
乱数のシードとして現在の時刻(ただし分と秒はゼロで固定し 1時間毎に変わる)を利用しています。
そのため、このコードでは1時間ごとにランダムがリセットされます。
function category_rand_orderby( $orderby, $query ){ if ( !is_admin() && $query->is_main_query() ) { if ( $query->is_category() ) { $seed = strtotime( date( 'Y-m-d H:00:00' ) ); mt_srand( $seed ); $orderby = 'RAND(' . mt_rand() . ')'; } } remove_filter( current_filter(), __FUNCTION__ ); return $orderby; } add_filter( 'posts_orderby', 'category_rand_orderby', 10, 2 );
参考サイト
WordPress 記事をランダムに表示してページングする方法