WP_Query
用于辅助循环。也就是说,它完全独立于页面的默认设置$wp_query
. 我怀疑它不起作用,因为你没有引用你的新WP_Query
循环中的对象。要做到这一点,您可以这样做:
if( $all_sports->have_posts() ) : while( $all_sports->have_posts() ) : $all_sports->the_post();
// do stuff
endwhile; endif;
HOWEVER, you shouldn\'t do that!
相反,这是对
pre_get_posts
action. 该操作可用于修改任何页面上的默认查询,而无需更改页面模板。看到您只是想修改默认的自定义post类型存档查询,这就是您想要的。下面是一些未经测试的代码,它们可能会起到作用:
add_action( \'pre_get_posts\', \'wpse163734_pre_get_post\' );
function wpse163734_pre_get_post( $query ) {
if( is_post_type_archive( \'cpt_sports\' ) && !is_admin() && $query->is_main_query() ) {
$query->set( \'posts_per_page\', -1 );
$query->set( \'orderby\', \'menu_order\' );
}
}
你给的所有其他论点
WP_Query
是自定义帖子类型存档页面查询的默认值,因此您无需修改它们。