ホームページ >CMS チュートリアル >&#&プレス >WordPressサイトに高度な検索を追加する方法

WordPressサイトに高度な検索を追加する方法

Lisa Kudrow
Lisa Kudrowオリジナル
2025-02-20 12:07:08254ブラウズ

How to Add an Advanced Search to Your WordPress Site

WordPressサイトに高度な検索を追加する方法

キーテイクアウト

  • WordPressの検索フォームは、WordPressコアの奥深くにある他のパラメーターを使用して、より焦点を絞った検索結果を可能にすることにより、基本的なクエリストリングパラメーター「S」を超えて強化できます。
  • 検索結果は、それぞれのスラグをそれぞれ「category_name」または「タグ」パラメーターに渡すことにより、カテゴリまたはタグで洗練できます。これは、プラグインを必要とせずに実行できます
  • 高度な検索は、PHPアレイパラメーターを使用して複数の値でさらに洗練できます。これは、WordPressテーマのfunctions.phpファイルでインターセプトして設定できます。これにより、ユーザーはより集中した検索のために複数のタグを選択できます。
  • WordPress検索フォームの大部分は、「S」という名前の単一のクエリストリングパラメーターを設定します。
  • それは何も悪いことではなく、長年にわたって唯一の選択肢だと思いました。 ただし、プラグインの助けがなければ、より高度なクエリが可能です(ただし、たくさんありますが)。 WordPressコアの奥深くにあるアプリケーションは、他のいくつかのクエリストリングパラメーターを解析し、それらを使用して、より焦点を絞った検索結果を返します。パラメーター名をリストする初歩的なドキュメントがいくつかあります。
添付ファイル
<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>
    attachment_id
  • 著者
  • 著者_name
  • cat
  • category_name
  • comments_popup
  • day
  • エラー
  • feed
  • hour
  • m
  • minute
  • 月num
  • name
  • p
  • page_id
  • ページング
  • pageName
  • post_parent
  • post_type
  • preview
  • second
  • static
  • subpost
  • subpost_id
  • タグ
  • tag_id
  • tb
  • w
  • year
私はこれらすべての作業が期待されているとは確信しておらず、いくつかは少し無意味ですが、wp_queryに渡すことができるパラメーターと一致しています。したがって、オプションを自動化するために、PHPのスミッジを使用してHTMLを使用して高度な検索フォームを作成できます。

カテゴリごとに検索を改良します SLUGをCategory_Nameパラメーターに渡すことにより、結果をカテゴリに制限できます。

検索フォームにより、ユーザーは検索を特定のカテゴリに絞り込むことができます。
<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>
すべてのカテゴリをリストしたい場合は、タグ:
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>
タグ

で検索を改良します 検索結果は、スラグをタグパラメーターに渡すことにより、タグに制限できます。

したがって、検索は結果を特定のタグに制限する可能性があります。
<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>
同様に、選択フィールドのすべてのタグのリストを生成できます。
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>

複数の値で検索を改良する場合はどうなりますか?たとえば、ユーザーは2つ以上のタグを選択し、結果のページをすべて設定する必要があります。 URLパラメーターのみを使用してこれを達成することはできませんが、HTML検索フォームを定義することから始めましょう。

タグリストという名前のPHPアレイパラメーターを使用したことに注意してください 。 WordPressによってすでに予約されているもの以外の名前は任意の名前を使用できます(上記のリストを参照)。 WordPressテーマのfunctions.phpファイルで検索送信をインターセプトできるようになりました。 Advanced_search_query関数は、検索がアクティブであるかどうかを検出し、それに応じてwp_query tag_slug__andパラメーターを設定します。
<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>
最後に、クエリが実行される前に、PRE_GET_POSTSアクションフックを使用してdabanced_search_query関数を実行します。
<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>
WordPressに高度な検索機能を追加するのは非常に簡単ですが、それが可能であると認識している開発者はほとんどいません...おそらく、ドキュメントと例が少しまばらであるためです
<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>
。偶然に発見したので、次のWordPressプロジェクトでこのコードが役立つことを願っています。 WordPressでの高度な検索に関するよくある質問 WordPressで検索結果をカスタマイズするにはどうすればよいですか?

​​

WordPressで検索結果をカスタマイズすることは、wp_queryクラスを使用して実現できます。このクラスを使用すると、特定のパラメーターを定義して検索結果を調整できます。たとえば、投稿タイトル内でのみ検索するパラメーターを設定したり、特定の投稿タイプを除外したり、カスタムフィールド内で検索したりできます。また、高度な検索カスタマイズオプションを提供するSearchWPなどのプラグインを使用することもできます。 get_the_tags()関数を使用することにより、特定の投稿に関連付けられたタグを取得できます。これは、より洗練された検索エクスペリエンスを作成するために使用でき、ユーザーは特定のタグで投稿を検索できます。

WordPressの検索クエリパラメーターを変更するにはどうすればよいですか?

​​

WordPressの検索クエリパラメーターを「query_vars」フィルターを使用して変更できます。これにより、デフォルトの「s」パラメーターをニーズにより具体的なものに変更できます。たとえば、URLをよりユーザーフレンドリーにするために「search_term」に変更できます。クエリとループ。ポストタイプ、カテゴリ、タグ、著者など、クエリをカスタマイズするために使用できる多数のパラメーターを提供します。これにより、高度な検索機能を作成するための強力なツールになります。

検索結果から特定の投稿タイプを検索結果から除外するにはどうすればよいですか? pre_get_postsのアクションフックwp_queryクラスと併せて。 「post_type」パラメーターを、検索結果に含める投稿タイプの配列に設定して、他のすべてを効果的に除外します。はい、WP_Queryの「Meta_Query」パラメーターを使用して、WordPressのカスタムフィールド内で検索できます。これにより、カスタムフィールドキーと値を指定し、これらの基準に一致する投稿を返すことができます。 SearchWP、Relevanssi、Ajax Search Proなどのプラグインを使用します。これらのプラグインは、部分的なマッチング、キーワードのステミング、検索の重み付けなどの高度な検索機能を提供し、より良いユーザーエクスペリエンスを提供します。 get_search_form()関数を使用して、プラグインなしでWordPressで検索フォームを作成できます。この関数は、検索フォームのHTMLを生成します。これは、ニーズに合わせてカスタマイズできます。 get_search_query()関数。この関数は検索クエリ文字列を取得し、検索結果ページに検索用語を表示するために使用できます。 wp_queryの「post_per_page」パラメーターを使用して、WordPressの検索結果の数。これにより、ページごとに表示する投稿数を指定し、検索結果の数を効果的に制限できます。

以上がWordPressサイトに高度な検索を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。