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 記事をランダムに表示してページングする方法