我有一个自定义的帖子类型,其中有分类法cities
还有一个术语berlin
. 存档可在以下位置查看example.com/cities/berlin
通常从archive.php
样板
现在,我想根据自定义字段订购,start_date
在本例中,但仍保留原始查询。所以当我导航到example.com/cities/newyork
循环仍将按预期工作。
这就是我所拥有的,但我只得到<p>Not Found</p>
最后
请帮忙。
谢谢:)
<?php
global $query_string; //to keep the original query around
$args = array(
\'orderby\' => \'meta_value_num\',
\'meta_key\' => \'start_date\',
\'order\' => \'DESC\'
);
$posts = query_posts($query_string . $args);
if (have_posts()) : while (have_posts()) : the_post();
?>
do stuff
<?php endwhile; else : ?>
<p>Not Found</p>
<?php endif; ?>
SO网友:helgatheviking
老问题,但它在头版,所以我有责任发帖说"Don\'t ever use query_posts()
" 要在不破坏原始查询的情况下修改查询,应使用pre_get_posts
钩
function wpa_49346_pre_get_posts( $query ){
if( is_tax() ){
set_query_var( \'meta_key\', \'start_date\' );
set_query_var( \'orderby\', \'meta_value_num\' );
set_query_var( \'order\', \'DESC\' );
}
}
add_action( \'pre_get_posts\', \'wpa_49346_pre_get_posts\' );