【问题标题】:Where is Wordpress search parameter checked?Wordpress 搜索参数在哪里检查?
【发布时间】:2018-09-08 18:32:25
【问题描述】:

这听起来很愚蠢,但我受阻。据我所知,当输入名称为“s”时,Wordpress 会识别搜索表单。操作始终是主页 url。但是在 index.php 或 page.php(取决于您的主页设置)中没有任何地方检查参数“s”。 Wordpress 究竟在哪里检查这个参数?

我正在尝试在特定页面上输出搜索结果,但是当我将“操作”值设置为除主页 URL 之外的任何内容时,它不起作用。我希望我可以进一步了解搜索的工作原理,并可能在我想要的页面中实现相同的参数检查 Howdy_McGee check this out

【问题讨论】:

    标签: wordpress search


    【解决方案1】:

    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 钩子,这通常用于合并自定义表。

    【讨论】:

    • 所以我有不同的类别,如“名人”、“文章”等......并且在每个类别的每个页面模板上,我都想包含一个搜索功能。唯一让我恼火的是,在某个类别下搜索帖子会在主页上显示结果,而留下用户所在的当前页面。所以是的,将页面带到搜索结果中是可行的,但对于我想要完成的事情来说并不可取。意思是,我想要的“名人”搜索结果格式与假设“文章”的搜索结果不同。
    • @LianDiktea 我明白了。我已经编辑了我的答案。不需要搜索到主页。
    • 我一直在玩弄你的解决方案。它适用于类别页面,我将在那里使用您的解决方案。不过还有一个问题,人物列表完全使用了不同的模板,所以我使用了一个使用自定义模板的静态页面。将页面永久链接作为“操作”值只会返回失败的搜索。是否可以在页面(不是类别页面)上返回搜索结果?我将包括屏幕截图以便更好地理解
    • @lian 名人列表是帖子类型吗?您能否通过将值保存为变量并检查is_tax() 来根据您是查看页面还是分类来更改搜索操作属性?也许使用template_include 也会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-04-10
    • 2014-09-15
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多