Php WordPress。获得相同数量的每种内容类型的帖子

Php WordPress。获得相同数量的每种内容类型的帖子,php,wordpress,loops,Php,Wordpress,Loops,假设我想展示30篇文章:10篇“A”类文章,10篇“B”类文章,10篇“C”类文章。按邮寄日期排序 我该怎么做 我的意思是我能做到 $args = array( 'posts_per_page' => 30, 'post_type' => array("A", "B", "C"), ); $posts = get_posts( $args ); 但是它只会给我带来30篇最新的帖子,而不是每篇都有10篇。你可以创建一个函数,传入你想要的每一篇文章的类型和数量,然

假设我想展示30篇文章:10篇“A”类文章,10篇“B”类文章,10篇“C”类文章。按邮寄日期排序

我该怎么做

我的意思是我能做到

$args = array(
    'posts_per_page'   => 30,
    'post_type' => array("A", "B", "C"),
);

$posts = get_posts( $args );

但是它只会给我带来30篇最新的帖子,而不是每篇都有10篇。你可以创建一个函数,传入你想要的每一篇文章的类型和数量,然后对它们进行WP_查询,然后返回你的帖子

e、 g

**以上更新以符合OP要求** 另一种选择是使用StdClass

$postsToReturn = new StdClass();
然后在每次迭代中,向类添加以下内容:

$postsToReturn->$post_type = $result->posts;
然后,您可以使用以下命令调用它:

$posts = so_getEqualPosts(30, ["A", "B", "C"]);
然后,可以通过以下方式访问帖子:

$posts->A
$posts->B
$posts->C
等等


这是未经测试的,而且是动态的,但应该给您一个起点:)

或者,如果您不想使用StdClass,请将
$postsToReturn
设置为数组,并在每次迭代中简单地推送
数组($postsToReturn,$result->posts)
。这将为您提供一个包含所有帖子的数组,而不是通过最终对象中的帖子类型进行访问。非常感谢您,但是否可以将所有这些帖子按发布时间排序到一个数组中?@悖论是的,应该是这样。如果您使用另一种方法(
array\u push($postsToReturn,$result->posts)
),您将得到一个包含所有帖子的数组。这里的困难是,在每次迭代中,虽然您可以使用WP_查询(
'orderby'=>'date',order'=>'DESC'
)进行排序,但是类型A将被排序并添加,然后类型B将被排序并添加,依此类推,但是整个数组将不会被排序(尽管其中的每个类型都将被排序)。然后您需要对整个数组进行排序,你可以用usort来做,比如<代码>usort($array,function($a,$b){返回strotime($a['post_date'])-strotime($b['post_date']);})查看更新的答案。好的,知道了,但为什么我不能只做$a=get_posts($args1)$b=获取职位($args2)$c=获得职位($args3);然后只是合并+排序数组?或者你的方法在速度和优化方面更好?
$posts->A
$posts->B
$posts->C