更新 2020 / 10 / 05
記事をランダム表示-重複しないよう-
posts_orderby フィルターにフックさせる関数内で get_query_var からページ番号を取得すると PHP だけで実装可能
functions.phpに記述
参考:https://teratail.com/questions/192647
function.php
<?php
function session_start_on_init() {
session_name( 'seed' );
session_start();
}
add_action( 'init', 'session_start_on_init' );
function order_posts_randomly( $orderby, $query ) {
if ( ! $query->is_main_query() ) {
return $orderby;
}
$paged = 0 === get_query_var( 'paged', 0 ) ? 1 : get_query_var( 'paged', 1 );
$seed = isset( $_SESSION['seed'] ) ? $_SESSION['seed'] : null;
if ( ( empty( $seed ) || 1 === $paged ) ) {
$seed = rand();
$_SESSION['seed'] = $seed;
}
return 'RAND(' . $seed. ')';
}
add_filter( 'posts_orderby', 'order_posts_randomly', 10, 2 );
?>