是否有任何内置的WP功能可用于组合表单域以返回特定数据

时间:2021-02-11 作者:The Chewy

我在一个网站(自定义WP主题)上有一个基本的工作板,它使用WP搜索表单按“工作”自定义帖子类型中的关键字进行搜索,用户还可以单击我在列中列出的工作类别,使用get_the_term_list().

客户提出了添加其他搜索功能的想法-薪资水平、地理位置等。如果我将这些设置为他们自己的分类法,WordPress中是否有内置功能,我可以在html表单中组合不同的标准(分类法),然后使用提交按钮返回所有组合字段的数据,或者这是需要用PHP本机完成的事情?

我很感激如果这是一个PHP的事情,它可能是一个陡峭的学习曲线等。

非常感谢

1 个回复
SO网友:Tom J Nowell

您可以使用基本输入字段和URL来完成此操作。

这是因为example.com/?s=test 是“的搜索URL”;测试“;,但是example.com/category/foo/?s=test 也可以工作,并搜索foo类别。

同样,大多数其他参数WP_Query 也需要工作,例如。post_type.

如果我们再深入一点,所有漂亮的永久链接和WP重写规则都只是将漂亮的URL转换为表单的正则表达式index.php?s=test&cat=foo

因此,创建一个表单,给它输入与的键和值匹配的名称和值WP_Query, 确保它使用GET 作为method 因此它们出现在URL中。

例如,此搜索表单搜索自定义帖子类型:

<form method="get" action="/">
    <input type="hidden" name="post_type" value="mycpt" />
    <input type="text" name="s" placeholder="search mycpts"/>
    <input type="submit" value="search"/>
</form>
请注意,有一个输入字段post_type.

您可以使用任何标准HTML输入、文本框、选择下拉列表等扩展此功能,只要name 匹配值WP_Query 接受

然而,值得注意的是,WP搜索并不是很好,改进它的选项也很有限。你也可能会被诱惑通过他们的元值搜索帖子或添加排除,抵制这种诱惑!根据帖子的元数据过滤/搜索帖子的性能成本是巨大的。它太大了,他们构建了一个完全独立的表系统,称为分类法和术语。

要进一步阅读,请参阅WP_Query https://developer.wordpress.org/reference/classes/wp_query/