假设我要显示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个。
答案 0 :(得分:1)
你可以创建一个函数并传入你想要的每个类型和数量,然后对它们运行WP_Query,然后返回你的帖子。
e.g。
<li><a href="/index.php?cmd=contact">Contact</a></li>
**以上更新以符合OP要求** 另一种方法是使用StdClass;
function so_getEqualPosts($number_posts, $post_types){
$postsToReturn = array();
foreach ($post_types as $post_type) {
$args = array(
'post_type' => $post_type,
'posts_per_page' => $number_posts,
'orderby' => 'date',
'order' => 'DESC'
);
$result = new WP_Query($args);
array_push($postToReturn, $result->posts);
}
usort($postsToReturn, function($a, $b) {
return strtotime($a['post_date']) - strtotime($b['post_date']);
});
return $postsToReturn;
}
然后在每次迭代中添加到类:
$postsToReturn = new StdClass();
然后你可以用:
来调用它$postsToReturn->$post_type = $result->posts;
然后可以通过以下方式访问帖子:
$posts = so_getEqualPosts(30, ["A", "B", "C"]);
等
这是未经测试的,并且非常实时,但应该给你一个起点:)