详细调试后WP::parse_request()
和WP_Query::parse_query()
我发现了unset( $query_vars[\'date\'] );
在里面\'request\'
过滤器帮助。
之前基本上未设置日期查询变量WP_Query::parse_query()
是这样调用的is_home()
返回false。
add_filter( \'request\', function( $query_vars ) {
global $wp_query, $wp;
if ( ! $wp_query->is_main_query() ) {
return $query_vars;
}
$qv_keys = array_keys( $wp->query_vars );
if ( ! ( in_array( \'product_cat\', $qv_keys, true )
|| in_array( \'product_tag\', $qv_keys, true )
|| in_array( \'post_type\', $qv_keys, true ) && \'product\' === $wp->query_vars[\'post_type\']
|| in_array( \'s\', $qv_keys, true )
) ) {
unset( $query_vars[\'date\'] );
}
return $query_vars;
} );
Explanation:
发布存档加载时
WP_Query::$is_home = true
所以我追溯了这个值设置的地方,简言之,我认为它是这样的:
$this->query_vars[\'post_type\']
和$this->query_vars[\'name\']
未设置in this condition as date查询变量未分配任何职位类型多次操作后的结果WP_Query::$is_singular
设置为falsehere它会导致WP_Query::$is_home = true
.