以随机顺序运行“循环”

时间:2015-11-09 作者:VesterDe

我使用一个瞬态来存储一个查询,该查询可以获得60篇文章,并对背景图像进行拼接,因为它大大提高了性能。

查询设置了“orderby”=>“rand”,但显然,当从瞬态中检索时,每次都会显示相同的结果。

我的问题是,我可以让循环以随机顺序显示查询结果吗?这将等于我的原始状态,具有更好的性能。

非常感谢。

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

据我所知,您希望得到相同的结果,但将其顺序随机化。因此,您需要对结果进行洗牌。使用起来很简单shuflle() PHP函数。但该函数需要数组,而不是对象。

您可以将对象从WP\\u查询转换为数组,或者,我认为最好使用get_posts() 而不是WP\\U查询。

$args = array(
    // Arguments to get posts
);

$posts = get_transient ( "your-transiente-name" );

if( $posts === false ) {
    $posts =  get_posts( $args );
    set_transient( "your-transiente-name", $posts, "the-expiration-time" );
}

// Shuffle the $post array
$posts = shuffle( $posts );

foreach( $posts as $post ) {
    setup_postdata( $post );
    // Standard loop stuff
}

wp_reset_postdata();

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp