问题不在于您从未在查询中指定哪个事件cat,而是您正在执行一个查询。
如果要更改主查询的内容,请更改查询,不要添加第二个查询。我们通过pre_get_posts
过滤器:
此挂钩在创建查询变量对象之后,但在实际查询运行之前调用。
pre\\u get\\u posts操作允许开发人员通过引用访问$query对象(对$query所做的任何更改都直接对原始对象进行-无需返回值)。
例如:
function my_home_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( \'cat\', \'123\' );
}
}
add_action( \'pre_get_posts\', \'my_home_category\' );
在您的情况下,您希望使用过滤器:
仅当它是主查询时,且仅当它是存档且该存档用于事件类别时,才能将post状态设置为future
不publish
然后从DESC
到ASC
由于当前请求的术语etc已设置,您需要进行类似以下检查:
function randomer11_fix_eventcat_archive( \\WP_Query $q ) {
if ( $q->is_main_query() && $q->is_archive() && $q->is_tax( \'eventcat\' ) ) {
$q->set( ... ); // set your options
}
}
add_action( \'pre_get_posts\', \'randomer11_fix_eventcat_archive\' );
你可以打电话
set
现在,在模板中,您可以根据需要多次删除查询,并使用正常的post循环。分页将在没有任何黑客攻击的情况下正常工作,页面加载速度将大大加快