搜索
首页CMS教程WordPress如何在WordPress网站上添加高级搜索

How to Add an Advanced Search to Your WordPress Site

如何在WordPress网站上添加高级搜索

钥匙要点

    通过使用WordPress Core内深处的其他参数,可以增强WordPress搜索表格超出基本Querystring参数“ s”,从而允许更加集中的搜索结果。
  • >搜索结果可以通过类别或标签来改进,分别将其各自的sl子传递到“ category_name”或“ tag”参数。这可以在不需要插件的情况下完成。
  • 使用PHP数组参数可以通过多个值进一步完善高级搜索,可以在WordPress主题的functions.php文件中拦截并设置。这允许用户选择多个标签以进行更集中的搜索。
  • 大多数WordPress搜索表格设置了一个名为“ S”的单个Querystring参数:
  • 这没什么错,我认为这是很多年来的唯一选择。 但是,在没有插件的情况下,可以进行更高级的查询(尽管有很多可用)。在WordPress核心内部,应用程序解析了其他几个Querystring参数,并使用它们来返回一组更为专注的搜索结果集。有一些基本文档列出了参数名称:
附件
<span><span><span><form> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></form></span>
</span><span><span><span><fieldset>></fieldset></span>
</span><span><span><span><input> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
</span><span><span><span><button> type<span>="submit"</span>></button></span>Search<span><span></span>></span>
</span><span><span><span></span>></span>
</span><span><span><span></span>></span></span></span></span></span></span>
  • 作者
  • fure_name
  • cat
  • > category_name
  • > comment_popup
  • >错误
  • feed
  • 小时
  • m
  • 分钟
  • 月份
  • >名称
  • p
  • page_id
  • >
  • > Pagename
  • > post_parent
  • > post_type
  • 预览
  • 第二
  • >静态
  • >子
  • subpost_id
  • >标签
  • tag_id
  • > tb
  • w
  • 我不相信所有这些工作,而有些工作有些毫无意义,但是它们可以与您可以传递给WP_QUERY的参数相匹配。因此,我们可以使用带有PHP的SMIDGEN的HTML创建高级搜索表格,以使选项自动化。

    按类别搜索
    <span><span><span><form> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></form></span>
    </span><span><span><span><fieldset>></fieldset></span>
    </span><span><span><span><input> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><button> type<span>="submit"</span>></button></span>Search<span><span></span>></span>
    </span><span><span><span></span>></span>
    </span><span><span><span></span>></span></span></span></span></span></span>
    您可以通过将其slug传递到category_name参数,例如,例如,将结果限制为类别。
    http://yoursite.com/?s=search+term&category_name=kittens
    我们的搜索表可以使用户将其搜索完善为特定类别:
    <span><span><span><form> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></form></span>
    </span><span><span><span><fieldset>></fieldset></span>
    </span><span><span><span><input> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><select> name<span>="category_name"</span>></select></span>
    </span><span><span><span><option> value<span>=""</span>></option></span>all categories<span><span></span>></span>
    </span><span><span><span><option> value<span>="kittens"</span>></option></span>cute kittens<span><span></span>></span>
    </span><span><span><span><option> value<span>="puppies"</span>></option></span>adorable puppies<span><span></span>></span>
    </span><span><span><span></span>></span>
    </span><span><span><span><button> type<span>="submit"</span>></button></span>Search<span><span></span>></span>
    </span><span><span><span></span>></span>
    </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span>
    如果您想列出所有类别,请在标签:

    >通过TAG
    <span><span><?php </span></span><span><span>// generate list of categories
    </span></span><span><span>$categories = get_categories();
    </span></span><span><span>foreach ($categories as $category) {
    </span></span><span>	<span>echo '<option value="', $category->slug, '">', $category->name, "</option>\n";
    </span></span><span><span>}
    </span></span><span><span>?></span></span></span>
    完善搜索 搜索结果可以通过将其slug传递给标签参数,例如
    http://yoursite.com/?s=search+term&tag=cockroach
    因此,您的搜索可能会将结果限制为某些标签,例如
    <span><span><span><form> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></form></span>
    </span><span><span><span><fieldset>></fieldset></span>
    </span><span><span><span><input> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><select> name<span>="tag"</span>></select></span>
    </span><span><span><span><option> value<span>=""</span>></option></span>any tag<span><span></span>></span>
    </span><span><span><span><option> value<span>="cockroach"</span>></option></span>cockroaches<span><span></span>></span>
    </span><span><span><span><option> value<span>="snake"</span>></option></span>snakes<span><span></span>></span>
    </span><span><span><span></span>></span>
    </span><span><span><span><button> type<span>="submit"</span>></button></span>Search<span><span></span>></span>
    </span><span><span><span></span>></span>
    </span><span><span><span></span>></span></span></span></span></span></span></span></span></span></span>
    同样,您可以为选择字段生成所有标签的列表:

    前进的高级搜索
    <span><span><?php </span></span><span><span>// generate list of tags
    </span></span><span><span>$tags = get_tags();
    </span></span><span><span>foreach ($tags as $tag) {
    </span></span><span>	<span>echo '<option value="', $tag->slug, '">', $tag->name, "</option>\n";
    </span></span><span><span>}
    </span></span><span><span>?></span></span></span>
    如果您想通过多个值完善搜索怎么办?例如,用户可以选择两个或多个标签,并且结果页面必须设置所有标签。我们不能仅使用URL参数来实现此目标,但让我们首先定义HTML搜索表格:
    <span><span><span><form> method<span>="get"</span> action<span>="<span><?php bloginfo('url'); ?></span>"</span>></form></span>
    </span><span><span><span><fieldset>></fieldset></span>
    </span><span><span><span><input> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search…"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><p>></p></span>Refine search to posts containing chosen tags:<span><span></span>></span>
    </span><span><span><?php </span></span><span><span>// generate list of tags
    </span></span><span><span>$tags = get_tags();
    </span></span><span><span>foreach ($tags as $tag) {
    </span></span><span>	<span>echo 
    </span></span><span>		<span>'<label>',
    </label></span></span><span>		<span>'<input type="checkbox" name="taglist[]" value="',  $tag->slug, '"> ',
    </span></span><span>		<span>$tag->name,
    </span></span><span>		<span>"\n";
    </span></span><span><span>}
    </span></span><span><span>?></span>
    </span><span><span><span><button> type<span>="submit"</span>></button></span>Search<span><span></span>></span>
    </span><span><span><span></span>></span>
    </span><span><span><span></span>></span></span></span></span></span></span></span></span>
    请注意,我使用了名为taglist的PHP数组参数 。您可以使用WordPress已保留的名称以外的任何名称(请参见上面的列表)。 现在,我们可以在WordPress主题的functions.php文件中拦截搜索提交。 Advanced_search_query函数检测是否有效搜索,然后相应地设置WP_QUERY TAG_SLUG__和参数。
    <span>// advanced search functionality
    </span><span>function advanced_search_query($query) {
    </span>
    	<span>if($query->is_search()) {
    </span>		
    		<span>// tag search
    </span>		<span>if (isset($_GET['taglist']) && is_array($_GET['taglist'])) {
    </span>			<span>$query->set('tag_slug__and', $_GET['taglist']);
    </span>		<span>}
    </span>	
    		<span>return $query;
    </span>	<span>}
    </span>
    <span>}</span>
    最后,我们使用pre_get_posts操作钩在执行查询之前运行我们的高级_search_query函数: 将高级搜索设施添加到WordPress非常容易,但很少有开发人员意识到这是可能的……也许是因为文档和示例有点稀疏

    。我偶然发现了它,希望您在下一个WordPress项目中发现此代码很有用。

    在WordPress中经常询问有关高级搜索的问题

    >如何在WordPress中自定义搜索结果?

    >可以通过使用WP_QUERY类自定义WordPress中的搜索结果。此类允许您定义特定参数来调整搜索结果。例如,您可以将参数设置为仅在帖子标题中搜索,排除某些帖子类型,甚至在自定义字段中搜索。您还可以使用提供高级搜索自定义选项的searchwp之类的插件。

    我可以使用标签来改善wordpress中的搜索结果?

    是的,标签可以显着改善WordPress中的搜索结果。通过使用get_the_tags()函数,您可以检索与特定帖子关联的标签。这可以用来创建更精致的搜索体验,从而使用户可以搜索具有特定标签的帖子。

    >如何使用“ query_vars”过滤器更改WordPress中的搜索查询参数?这使您可以将默认的“ S”参数更改为更特定于您的需求的东西。例如,您可以将其更改为'search_term',以使您的URL更加用户友好。

    > wordpress中的wp_query是什么?

    wp_query是WordPress中的一类,可以创建自定义自定义查询和循环。它提供了许多参数,您可以使用这些参数来自定义查询,例如Post类型,类别,标签,作者等。这使其成为创建高级搜索功能的功能强大的工具。

    >

    我如何从WordPress中的搜索结果中排除某些帖子类型?

    >可以使用' pre_get_posts的动作钩与WP_QUERY类结合使用。您可以将“ post_type”参数设置为要在搜索结果中包含的帖子类型的数组,有效地排除了所有其他内容。

    我可以在WordPress中的自定义字段中搜索吗?是的,您可以使用WP_QUERY中的“ meta_query”参数在WordPress中的自定义字段中搜索。这使您可以指定一个自定义字段键和值,并返回与这些条件相匹配的帖子。

    >

    >如何改善WordPress中的搜索功能?通过使用SearchWP,Ressienanssi或Ajax Search Pro等插件。这些插件提供了高级搜索功能,例如部分匹配,关键字steamming和搜索权重,提供更好的用户体验。

    >

    我可以在没有插件的情况下在WordPress中创建搜索表格吗?可以通过使用get_search_form()函数在无插件的情况下在WordPress中创建搜索表格。此函数生成了搜索表格的HTML,您可以自定义以适合您的需求。

    >

    如何在WordPress中显示搜索查询? get_search_query()函数。此函数检索搜索查询字符串,可用于在您的搜索结果页面上显示搜索词。

    我可以限制WordPress中的搜索结果数吗?通过使用WP_QUERY中的“ post_per_page”参数在WordPress中的搜索数量。这使您可以指定每个页面显示的帖子数,从而有效地限制了搜索结果的数量。
  • 以上是如何在WordPress网站上添加高级搜索的详细内容。更多信息请关注PHP中文网其他相关文章!

    声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    WordPress开发的5个最佳ID(以及原因)WordPress开发的5个最佳ID(以及原因)Mar 03, 2025 am 10:53 AM

    为WordPress开发选择正确的集成开发环境(IDE) 十年来,我探索了WordPress开发的许多集成开发环境(IDE)。 纯粹的品种 - 从免费到商业,基本到FEA

    使用OOP技术创建WordPress插件使用OOP技术创建WordPress插件Mar 06, 2025 am 10:30 AM

    本教程演示了使用面向对象的编程(OOP)原理构建WordPress插件,利用Dribbble API。 让我们在保留原始含义和结构的同时完善文本以清晰和简洁。 object-ori

    如何将PHP数据和字符串传递给WordPress中的JavaScript如何将PHP数据和字符串传递给WordPress中的JavaScriptMar 07, 2025 am 09:28 AM

    将PHP数据传递给JavaScript的最佳实践:WP_LOCALIZE_SCRIPT和WP_ADD_INLINE_SCRIPT的比较 在PHP文件中将数据存储在静态字符串中是建议的练习。 如果在您的JavaScript代码中需要此数据,请合并

    如何使用WordPress插件嵌入和保护PDF文件如何使用WordPress插件嵌入和保护PDF文件Mar 09, 2025 am 11:08 AM

    本指南演示了如何使用WordPress PDF插件在WordPress帖子和页面中嵌入和保护PDF文件。 PDFS为从目录到演示文稿提供了一种用户友好的,普遍访问的格式。 此方法ENS

    See all articles

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    AI Hentai Generator

    AI Hentai Generator

    免费生成ai无尽的。

    热门文章

    R.E.P.O.能量晶体解释及其做什么(黄色晶体)
    2 周前By尊渡假赌尊渡假赌尊渡假赌
    仓库:如何复兴队友
    4 周前By尊渡假赌尊渡假赌尊渡假赌
    Hello Kitty Island冒险:如何获得巨型种子
    3 周前By尊渡假赌尊渡假赌尊渡假赌

    热工具

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    功能强大的PHP集成开发环境

    适用于 Eclipse 的 SAP NetWeaver 服务器适配器

    适用于 Eclipse 的 SAP NetWeaver 服务器适配器

    将Eclipse与SAP NetWeaver应用服务器集成。

    EditPlus 中文破解版

    EditPlus 中文破解版

    体积小,语法高亮,不支持代码提示功能

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

    Atom编辑器mac版下载

    Atom编辑器mac版下载

    最流行的的开源编辑器