将完整的帖子和来自两种不同帖子类型的4个摘录结合起来

【将完整的帖子和来自两种不同帖子类型的4个摘录结合起来】我正在尝试使最新的帖子成为完整的帖子。该帖子可以来自两种不同的帖子类型” post” 和” tutorial” 。我还想显示四个摘录, 两个摘录来自” post” 帖子类型, 两个摘录自” tutorial” post类型。我不想在摘要中重复完整的帖子。
我尝试使用一个WP_Query, 这几乎使我明白了。我也尝试过使用多个WP_Query, 但这并不是那么幸运。

$args= array( 'post_type' => array( 'post', 'tutorial' ), 'post_per_page' => 5 ); $query = new WP_Query( $args ); if ( $query-> have_posts() ) : $count = 0; while ( $query-> have_posts() ) : $query-> the_post(); if ( $count == 0 ) { ?> < h2> < ?php the_title(); ?> < /h2> < ?php the_content(); $count ++; } else { ?> < h2> < ?php the_title(); ?> < /h2> < ?php the_excerpt(); } endwhile; endif; wp_reset_postdata(); ?>

所以这段代码使我非常接近。但是摘录不是我想要的。我希望它显示两个” 帖子” 摘录和两个” 教程” 摘录。现在显示的是” 指南” 的一个摘录和” 帖子” 的三个摘录。
#1要在一个查询中进行设置, 该任务会有些复杂。我为你编写了一个代码, 其中包含每个步骤的注释。请检查一下。
// first get last published post $last_post = get_posts( array( 'post_type' => array( 'post', 'tutorial' ), 'numberposts' => 1 ) ); // get two posts excluding $last_post which might be a post $last_two_posts = get_posts( array( 'post_type' => array( 'post' ), 'numberposts' => 2, 'exclude' => array($last_post[0]-> ID) ) ); // get two tutorial excluding $last_post which might be a tutorial $last_two_tutorials = get_posts( array( 'post_type' => array( 'tutorial' ), 'numberposts' => 2, 'exclude' => array($last_post[0]-> ID) ) ); $posts = array_merge($last_post, $last_two_posts, $last_two_tutorials); foreach( $posts as $post ) { setup_postdata($post); // print content only for first post and excerpt for others if ($post-> ID == $last_post[0]-> ID) { the_content(); } else { if($post-> post_type == 'post') { echo '< div class="post-excerpt"> ' . get_the_excerpt() . '< /div> '; } else { echo '< div class="tutorial-excerpt"> ' . get_the_excerpt() . '< /div> '; } } }wp_reset_postdata();

    推荐阅读