与公认的答案所建议的相反,您不应该使用query_posts
Note: 此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query\\u posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为新的查询实例来修改它。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。
另外,看看你的代码,这是对一些模板的主要查询,由于你甚至没有花时间回复@Roberthue对OP的评论,我仍然不知道是哪个模板。这让我想到以下几点:,never 将主查询替换为任何存档页或主页上的任何类型的自定义查询。自定义查询只能替换页面模板上的主查询。请参见this post 这就解释了我为什么要这么说
你可以简单地使用pre_get_posts
要更改特定模板上的邮政订单,请与conditional tags
更改类别页面上的发布顺序的示例
add_action( \'pre_get_posts\', function ( $query ) {
if ( !is_admin() && $query->is_home() && $query->is_main_query() ) {
$query->set( \'orderby\', \'title\' );
$query->set( \'order\', \'ASC\' );
}
});
如果在所有模板上都需要此功能,可以执行以下操作
add_action( \'pre_get_posts\', function ( $query ) {
if ( !is_admin() && !$query->is_page() && $query->is_main_query() ) { //Exclude page templates
$query->set( \'orderby\', \'title\' );
$query->set( \'order\', \'ASC\' );
}
});