
こうすればいいんじゃん 第三弾
神降臨!
例えばカテゴリ ページの記事をランダム順に表示したい場合、クエリを呼び出す際に orderby に rand を指定します。検索すると沢山でてくる。でも、この方法には欠陥があります。なんてことだ! 2ページ目以降も全記事からランダムなので、確率的に
この記事を見たら解決した!
さとーさんは posts_order っていうフックを覚えた!
記事の内容では「特定のカテゴリー」の場合でしたが、そこを記事一覧にして実験した。
記事一覧なら順番ランダム…ってことでこんな感じに…
function set_get_posts_order( $orderby, $query ) {
// 記事一覧なら順番ランダム
if ( is_home() ) {
$seed = strtotime( date( 'YmdH' ) );
mt_srand( $seed );
$orderby = 'RAND(' . mt_rand() . ')';
}
remove_filter( current_filter(), __FUNCTION__ );
return $orderby;
}
add_filter( 'posts_orderby', 'set_get_posts_order', 10, 2 );
出来た!!!
アーカイブとかの順番はそのまま公開日降順。
これでいいんじゃん!