我正在努力使我的自定义post_type将在我的Wordpress网站X主页上的分页循环输出X个帖子。但是,它不起作用。
这是我的代码;
<?php if ( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); } else if ( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); } else { $paged = 1; }
$my_query = new WP_Query ( array (
'post_type' => array ( 'reviews', 'blogtours', 'interviews', 'post' ),
'posts_per_page' => array( '1', '5', '0', '0' ),
'paged' => $paged, ) );
while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
我设置采访&#39;和&#39;发布&#39;现在为0因为他们还没有。我甚至尝试删除它们,认为你无法将post_per_page设置为0并且也没有工作(从posts_per_page和post_type中删除它们)。
到目前为止,唯一有用的是我改变了;
'posts_per_page' => array( '1', '5', '0', '0' ),
到
'posts_per_page' => 3,
举个例子。然后,它显示3个帖子,但一般来自所有post_types,这是我不想要的。我希望能够从单个post_type中选择它。因为&#34; blogtours&#34; post_type比其他任何东西都要多得多,如果我不把它限制在一个较小的数字,其他post_types将永远不会被看到(除非你去头版,但我每天都会做很多帖子所以即使这是不可行的。
非常感谢任何帮助!
答案 0 :(得分:0)
根据我研究的内容,您无法获得posts_per_page的数组。它必须是一个数字。你试图将所有这些帖子转储到相同的Feed或不同的页面?如果是不同的页面,则应将查询分开。每页帖子将限制所有帖子仅显示查询总数3。无论如何,它基本上只会抓住3。如果您将不同帖子上的每个查询分开,则可以按照您希望的方式单独设置每页的帖子。然后我会有一个单独的数组,你将所有不同的帖子推入,然后被送到你的主页。那有意义吗?查询每个帖子类型,以便限制从数据库中获得的帖子数量,然后将它们推送到所有帖子的主数组中。
以下是您的四个单独查询,但请确保我拥有您想要的正确posts_per_page。
$post_reviews = get_posts(
'post_type' => 'reviews',
'post_status' => 'publish',
'posts_per_page' => 5
);
$post_blogtours = get_posts(
'post_type' => 'blogtours',
'post_status' => 'publish',
'posts_per_page' => 3
);
$post_interviews = get_posts(
'post_type' => 'interviews',
'post_status' => 'publish',
'posts_per_page' => 3
);
$post_post = get_posts(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 5
);
// Below is where you merge all four arrays
$all_posts = array_merge($post_reviews, $post_blogtours, $post_interviews, $post_post);
// Sort through the posts, this might need modification based on your data in the array
function sortFunction( $a, $b ) {
return strtotime($a["date"]) - strtotime($b["date"]);
}
usort($all_posts, "sortFunction");
// Here is your loop through each post
foreach ($all_posts as $post) {
echo $post;
}