问题是您没有保存自定义查询的结果。要按自己的方式执行,需要将查询结果保存到变量中,如下所示:
$myposts = query_posts( $archive_args );
if ( $myposts->have_posts() ) : while ($myposts->have_posts()) : $myposts->the_post();
然而,这不是最有效的方法。WP除了运行此自定义查询外,还运行默认查询。所以,你最好使用
pre_get_posts
更改主查询并仅使用其结果,这意味着您无需执行自定义查询或添加
$myposts
完全是一部分。
你的pre_get_posts
过滤器应该很简单,如:
// If this is the main query, not in wp-admin, and it\'s for an archive
if($query->is_main_query() && !is_admin() && $query->is_post_type_archive()) {
// Pull 8 posts per page
$query->set(\'posts_per_page\', \'8\');
}