我有一个分类模板,它返回正确的帖子(实际上是一个自定义帖子类型),但我想改变帖子的显示顺序。然而,我所尝试的一切都不会改变帖子的顺序。我假设既然帖子已经返回,那么我应该使用“query\\u posts”来更改帖子的顺序。照着based on the codex, 我在模板上的循环之前添加了以下内容:
<?php
global $query_string;
query_posts( $query_string . \'&order=>ASC\');
?>
将“ASC”更改为“DESC”不会对列表产生任何更改。
注意:我想要的最终结果将比这个示例更复杂,但目前我甚至无法得到像上面这样的简单排序。
我也尝试过使用这种方法
<?php $sectionarg = array(
\'order\' => \'ASC\',
);
query_posts($sectionarg); ?>
但这完全破坏了原有的返回帖子列表,并将其替换为常规帖子。因此,要维护原始查询,您必须使用第一种方法,但接下来如何对返回的帖子进行排序?如有任何建议,将不胜感激。谢谢
最合适的回答,由SO网友:s_ha_dum 整理而成
我假设既然帖子已经返回,那么我应该使用“query\\u posts”来更改帖子的顺序。
这种假设是错误的。你应该尽量不要使用query_posts
.
在上使用筛选器pre_get_posts
.
function pregp_wpse_108235( $qry ) {
if ( $qry->is_main_query() && $qry->is_tax() ) {
$qry->set( \'order\', \'ASC\' );
}
}
add_action( \'pre_get_posts\', \'pregp_wpse_108235\' );
但这完全破坏了原有的返回帖子列表,并将其替换为常规帖子。
是的,您所做的将返回正常的post索引。您没有提供任何分类参数,但作为query_posts
不管怎么说,这是错误的做法,没有必要担心。