首頁 > CMS教程 > &#&按 > 如何在WordPress網站上添加高級搜索

如何在WordPress網站上添加高級搜索

Lisa Kudrow
發布: 2025-02-20 12:07:08
原創
258 人瀏覽過

鑰匙要點

    通過使用WordPress Core內深處的其他參數,可以增強WordPress搜索表格超出基本Querystring參數“ s”,從而允許更加集中的搜索結果。
  • >搜索結果可以通過類別或標籤來改進,分別將其各自的sl子傳遞到“ category_name”或“ tag”參數。這可以在不需要插件的情況下完成。
  • 使用PHP數組參數可以通過多個值進一步完善高級搜索,可以在WordPress主題的functions.php文件中攔截並設置。這允許用戶選擇多個標籤以進行更集中的搜索。
  • 大多數WordPress搜索表格設置了一個名為“ S”的單個Querystring參數:
  • 這沒什麼錯,我認為這是很多年來的唯一選擇。 但是,在沒有插件的情況下,可以進行更高級的查詢(儘管有很多可用)。在WordPress核心內部,應用程序解析了其他幾個Querystring參數,並使用它們來返回一組更為專注的搜索結果集。有一些基本文檔列出了參數名稱:
附件
<span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span>
</span><span><span><span><fieldset</span>></span>
</span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search&hellip;"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
</span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span>
</span><span><span><span></fieldset</span>></span>
</span><span><span><span></form</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</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span>
    </span><span><span><span><fieldset</span>></span>
    </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search&hellip;"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span>
    </span><span><span><span></fieldset</span>></span>
    </span><span><span><span></form</span>></span></span>
    登入後複製
    登入後複製
    您可以通過將其slug傳遞到category_name參數,例如,例如,將結果限制為類別。
    http://yoursite.com/?s=search+term&category_name=kittens
    登入後複製
    我們的搜索表可以使用戶將其搜索完善為特定類別:
    <span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span>
    </span><span><span><span><fieldset</span>></span>
    </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search&hellip;"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><select</span> name<span>="category_name"</span>></span>
    </span><span><span><span><option</span> value<span>=""</span>></span>all categories<span><span></option</span>></span>
    </span><span><span><span><option</span> value<span>="kittens"</span>></span>cute kittens<span><span></option</span>></span>
    </span><span><span><span><option</span> value<span>="puppies"</span>></span>adorable puppies<span><span></option</span>></span>
    </span><span><span><span></select</span>></span>
    </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span>
    </span><span><span><span></fieldset</span>></span>
    </span><span><span><span></form</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>
    登入後複製
    完善搜索 搜索結果可以通過將其slug傳遞給標籤參數,例如
    http://yoursite.com/?s=search+term&tag=cockroach
    登入後複製
    因此,您的搜索可能會將結果限制為某些標籤,例如
    <span><span><span><form</span> method<span>="get"</span> action<span>="<?php bloginfo('url'); ?>"</span>></span>
    </span><span><span><span><fieldset</span>></span>
    </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search&hellip;"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><select</span> name<span>="tag"</span>></span>
    </span><span><span><span><option</span> value<span>=""</span>></span>any tag<span><span></option</span>></span>
    </span><span><span><span><option</span> value<span>="cockroach"</span>></span>cockroaches<span><span></option</span>></span>
    </span><span><span><span><option</span> value<span>="snake"</span>></span>snakes<span><span></option</span>></span>
    </span><span><span><span></select</span>></span>
    </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span>
    </span><span><span><span></fieldset</span>></span>
    </span><span><span><span></form</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>
    登入後複製
    如果您想通過多個值完善搜索怎麼辦?例如,用戶可以選擇兩個或多個標籤,並且結果頁面必須設置所有標籤。我們不能僅使用URL參數來實現此目標,但讓我們首先定義HTML搜索表格:
    <span><span><span><form</span> method<span>="get"</span> action<span>="<span><?php bloginfo('url'); ?></span>"</span>></span>
    </span><span><span><span><fieldset</span>></span>
    </span><span><span><span><input</span> type<span>="text"</span> name<span>="s"</span> value<span>=""</span> placeholder<span>="search&hellip;"</span> maxlength<span>="50"</span> required<span>="required"</span> /></span>
    </span><span><span><span><p</span>></span>Refine search to posts containing chosen tags:<span><span></p</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>',
    </span></span><span>		<span>'<input type="checkbox" name="taglist[]" value="',  $tag->slug, '" /> ',
    </span></span><span>		<span>$tag->name,
    </span></span><span>		<span>"</label>\n";
    </span></span><span><span>}
    </span></span><span><span>?></span>
    </span><span><span><span><button</span> type<span>="submit"</span>></span>Search<span><span></button</span>></span>
    </span><span><span><span></fieldset</span>></span>
    </span><span><span><span></form</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
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板