WordPressでカスタムフィールドを検索に含ませるなら、表示結果を対象に
作成日:
2019年3月1日
WordPressでサイト内検索をする場合、その対象はタイトル、本文、抜粋と非常に限定的です。
そのため、人によってはカスタムフィールドを検索対象に含めるために、Search Everythingを導入したり、自らfunctions.phpにコードを追加することもあるでしょう。
[mx_card style="card_style:2"]ちなみに、Search Everythingってもう2年前から更新が停止しているようなので、今後のアップデートは期待出来ないでしょう。[/mx_link]しかし、ここでハタと気づきました。
そもそも検索対象はカスタムフィールドだけで良いのか?むしろ、カスタムフィールドによってはフロントには出ない(出したくない)情報を保存することもあり得るので、それを検索対象に自動で含めてしまうのも問題かもしれません。
また、最近は「ブログカード」形式で、URLを入力すればその先のタイトルや抜粋を自動出力して表示する、ということも多く見られますが、元々のデータベースのpost_contentにはURLしか保存されていませんので、検索してもそのURLのタイトルは検索対象に含まれません。
つまり、本来検索で対象にしたいコンテンツとは、ブログカードやカスタムフィールド、ショートコード等の結果が反映されてフロントに表示されている記事内容となります。
ですので、
- 投稿保存・更新時に、記事内容の表示結果をカスタムフィールドに保存
この時、wp_strip_all_tagsでHTMLタグや改行を削除しておくと良いでしょう。 - 検索時に、meta_queryを使用してこのカスタムフィールドを検索対象に含める
とすれば、簡易的に検索を改善出来るのではなかろうかと思います。
物草 灸太郎
WordPressでホームページを制作しつつ、休日は畑を耕したりDIYを楽しんでいます。
コメントをどうぞ