【问题标题】:Wordpress search form not displaying results as it should beWordpress 搜索表单没有显示应有的结果
【发布时间】:2016-09-20 10:11:44
【问题描述】:

我正在使用表单从 2 种自定义帖子类型中进行搜索,即 job_listingproduct 。如果用户在输入字段中输入内容,但如果他没有输入任何内容,则它工作正常,然后搜索页面打开,其中显示帖子类型 post

它应该显示帖子类型 job_listingproduct 的结果,具体取决于所选的选择字段

表格的代码是:

<form role="search" method="get" id="searchform" action="<?php echo home_url( '/' ); ?>">                  
  <div class="input-box">
     <input name="s" id="s" type="text" class="form-control" placeholder="What you are looking for...">
  </div>

  <div class="selection-box">
      <select name="post_type" id="basic" class="selectpicker show-tick form-control">
          <option value="job_listing">Listing</option>
          <option value="product">Shop</option>                                                
       </select>                      
  </div>

  <div class="search-btn">
       <input type="submit" class="form-control" value="search">
  </div>
</form>

我必须做些什么才能让它按我想要的方式工作。

【问题讨论】:

  • 我认为如果你的主题是第三方主题,你应该向主题开发者询问。据我所知,您的问题取决于主题。
  • @Stratboy 感谢您的时间和帮助。实际上我正在使用 listify 主题的子主题。而且我很确定那些人不会在这件事上提供帮助..我将使用一些默认主题或自定义主题测试代码,看看它是否有效..
  • 回到你原来的问题:你的意思是如果一个人没有在搜索字段上写任何东西并点击搜索按钮,那么结果页面将是帖子存档?
  • 它仍然是一个搜索页面,但结果只有帖子
  • 所以您希望帖子根本不可搜索?

标签: php wordpress forms custom-post-type


【解决方案1】:

如果您可以编写一些代码,您可以使用通用的pre_get_posts 操作来更改搜索查询(官方文档中有示例)。

或者使用这样的插件(它可以让您从搜索中排除帖子,以及搜索自定义元框值等等..):https://it.wordpress.org/plugins/search-everything/

【讨论】:

  • 那么我想它会改变所有搜索查询表单的结果,而不仅仅是这个特定的表单......对吗??
  • 嗯,我想是的,对不起,我不认为你有超过 1 个搜索字段...如果你有不同的搜索表单,必须搜索不同的东西,可能你必须编码或聘请优秀的开发人员。我不知道是否有合适的插件,因为这是一个非常不寻常的用例。但也许是的......只要看看插件目录并尝试一些。
  • 附言。无论如何,如果没有插件,我认为正确的路径仍然是使用 pre_get_posts,但可能会添加一个自定义查询 var 来读取过滤器回调并依赖于修改主查询。
  • 由于项目成本,聘请另一个开发人员不是一种选择,我想我会尝试 pre_get_posts...自定义帖子中的正文搜索 = job_listing 不输入任何内容然后结果 url 是 example.com/?s=&post_type=job_listing ,所以我会将其重定向到 example.com/listings (job_listing 自定义帖子的存档页面)感谢您的帮助好友