Php WordPress。获得相同数量的每种内容类型的帖子
假设我想展示30篇文章:10篇“A”类文章,10篇“B”类文章,10篇“C”类文章。按邮寄日期排序 我该怎么做 我的意思是我能做到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篇。你可以创建一个函数,传入你想要的每一篇文章的类型和数量,然
$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