转瞬即逝似乎需要付出很多额外的努力。相反,只要使用MySQL的RAND函数可以作为可复制随机数的种子。
使用如下函数:
function force_random_day_seed($orderby) {
$seed = floor( time() / DAY_IN_SECONDS );
$orderby=str_replace(\'RAND()\', "RAND({$seed})", $orderby);
return $orderby;
}
然后,围绕您的WP\\u查询或get\\u posts或检索这篇文章的任何内容,使用以下筛选代码:
add_filter(\'posts_orderby\', \'force_random_day_seed\');
$args = array(\'numberposts\' => 1, \'orderby\' => \'rand\');
$totd = get_posts($args);
remove_filter(\'posts_orderby\', \'force_random_day_seed\');
这将添加过滤器,获取帖子,然后删除过滤器。
通过将种子设置为每天更改一次的数字,则随机数将在每天的每次都生成相同的答案。然后,它会在每一天\\u IN\\u秒内给出一个不同的随机数。
无瞬变,无需存储数据。
Update for WordPress 4.5+
WordPress 4.5+:现在支持包含种子值的随机排序:
$rand = sprintf( \'RAND(%d)\', floor( time() / DAY_IN_SECONDS ) );
$args = array( \'numberposts\' => 1, \'orderby\' => $rand );
$totd = get_posts($args);
参见票证
#35692 了解更多信息。