我很难想出如何完成这个(非常简单的)任务:
随机获取4篇帖子,但仅从最近的10篇帖子中进行选择。
这对于随机部分非常有效,但显然可以从所有帖子中选择:
$query = array(
\'posts_per_page\' => 4,
\'orderby\' => \'rand\',
\'post__not_in\' =>array($post->ID)
);
$wp_query = new WP_Query($query);
基本上,我想获取一个查询的结果:
$firstquery = array(
\'posts_per_page\' => 10,
\'orderby\' => \'date\',
\'post__not_in\' =>array($post->ID),
\'order\' => \'DESC\'
);
然后把结果传给第一个。
任何帮助都将不胜感激。我已经考虑过合并它们,但我认为这只是给我两者的结果?有点困惑。
最合适的回答,由SO网友:gmazzap 整理而成
运行第一个查询las 10个帖子,然后使用array_rand
posts数组上的PHP函数:
$args = array(
\'posts_per_page\' => 10,
\'post__not_in\' =>array( $post->ID ),
\'orderby\' => \'post_date\',
\'order\' => \'DESC\'
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
if ( $query->post_count > 4 ) {
$query->posts = array_rand( $query->posts, 4 ); // get 4 random posts
$query->post_count = 4; // update post count
// for pagination, if you need it
$query->max_num_pages = (int) ceil( $query->found_posts / 4 );
}
// After that loop as usual
while ( $query->have_posts() ) : $query->the_post();
// loop here
endwhile;
wp_reset_postdata();
}
SO网友:Nabil Kadimi
此答案不正确。。。我不能在它被接受后撤回它,请看评论。
您可以使用wp_get_recent_posts() 要获取最新的10篇帖子,请获取ID并将其提供给您的WP_Query
\'spost__in
论点
global $post;
$recent_posts = wp_get_recent_posts( array(
\'numberposts\' => 10,
\'exclude\' => $post->id,
) );
$recent_posts_ids = array();
foreach( $recent_posts as $recent_post ) {
$recent_posts_ids[] = $recent_post["ID"];
}
$query_args = array(
\'posts_per_page\' => 4,
\'orderby\' => \'rand\',
\'post__in\' => $recent_posts_ids,
);
$wp_query = new WP_Query( $query_args );