这听起来很愚蠢,但我受阻了。据我了解,当输入名称为s时,Wordpress可以识别搜索表单。该操作始终是主URL。但是index.php或page.php中的任何地方(取决于您的首页设置)都不会检查参数“ s”。 WordPress到底在哪里检查此参数?
我正在尝试在特定页面上输出搜索结果,但是当我将“ action”值设置为除Home URL之外的任何内容时,它均不起作用。我希望我可以进一步了解搜索的工作原理,并可能在所需页面中实现相同的参数检查 Howdy_McGee check this out
答案 0 :(得分:0)
WordPress不需要搜索返回首页。 s
查询变量是WordPress搜索的保留关键字。您可以做的就是修改搜索表单,使其包含当前网址:
global $wp;
<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( $wp->request ) ); ?>">
通过在术语页面(分类学档案)上进行操作,它也将搜索限于该特定术语,而无需任何其他工作。您可以在searchform.php
模板中进行修改。如果您没有,可以从the 2017 theme files抢购它。
WordPress通过WP_Query类/对象提供的class-wp-query.php
文件来解析大多数请求。搜索由WP_Query::parse_search()
如果您要修改搜索或实际上是任何查询,则可以始终使用pre_get_posts
来更改查询对象,然后再从数据库中请求它。如果要在请求之前修改SQL,可以使用posts_clauses
钩子,通常此钩子用于合并自定义表。