搜索查询失败的原因是您丢弃了主查询并创建了一个全新的辅助查询。辅助查询有第二个页面,而主查询没有。主查询很重要,因为它没有第二页,所以显示404,这是正确的行为。
与其忽略主查询,不如对其进行修改。如果希望主查询在搜索中每页仅显示4个结果,请使其在搜索时每页仅显示4个结果。不要丢弃它并使用new WP_Query
具有posts_per_page
设置为4。使用pre_get_posts
要更改的筛选器posts_per_page
到主查询中的4。
函数文件中的一个微不足道的过滤器会一直满足您的需求:
add_action( function( \\WP_Query $query ) {
if ( $query->is_search() && $query->is_main_query() ) {
$query->set( \'posts_per_page\', 4 );
}
} );
这样,一个标准的post循环和标准分页就可以解决这个问题,而无需自定义查询。这比
new WP_Query
是否有任何方法可以将WP\\u Query设置为默认值?
是,但:
这是一种非常糟糕的做法,因为模板中的任何内容都太迟了,无法解决您的问题,它会带来新的问题,您仍然需要双倍的查询WP_Query
, 问题是您创建了一个新的,这是一个糟糕的做法如果要修改主查询,请通过pre_get_posts
, 不要创建新的。
我强烈建议阅读pre_get_posts
文档,它将为您节省大量时间并使事情更清楚:
https://developer.wordpress.org/reference/hooks/pre_get_posts/