你没有使用query_vars
非常正确-此过滤器用于白名单“public”查询变量,而不是实际设置它们的值。也叫“相当早”(wp::parse_request
), 所以任何条件标记is_tax()
在这个阶段总是错误的。
使用pre_get_posts
覆盖默认查询的操作。话虽如此,你需要一个习惯ORDER BY
条款使用posts_orderby
过滤器:
function wpse_179686_posts_orderby( $orderby, $wp_query ) {
if ( $wp_query->is_main_query() && $wp_query->is_tax( array( \'series\', \'speakers\', \'topics\', \'venues\' ) ) )
$orderby = \'DATE( post_date ) DESC, TIME( post_date ) ASC\';
return $orderby;
}
add_filter( \'posts_orderby\', \'wpse_179686_posts_orderby\', 10, 2 );