您需要更改查询帖子的方式,以便可以将种子值传递给MySQLs RAND函数。如果您的帖子在同一小时内显示,则该种子(以及您的帖子顺序)将保持不变。
This post 显示了一个示例。我对其进行了修改,以显示如何按小时进行:
在你的主题函数中试试这个。php文件:
function hour_random_posts_orderby( $orderby ) {
$seed = floor( time() / 3600 );
$orderby = str_replace( \'RAND()\', "RAND({$seed})", $orderby );
return $orderby;
}
现在查询如下随机帖子:
<?php
$args = array(
\'orderby\' => \'rand\'
);
add_filter( \'posts_orderby\', \'hour_random_posts_orderby\' );
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
....
}
}
else {
echo "<p>No posts found</p>";
....
}
....
wp_reset_postdata();
remove_filter( \'posts_orderby\', \'hour_random_posts_orderby\' );
?>