WordPressのキーワード検索は通常、投稿や固定ページの「タイトル」と「コンテンツ(本文)」を検索対象とします。 タイトルまたはコンテンツに検索キーワードを含む投稿や固定ページを検索結果一覧に表示します。
表題のように、検索対象にカスタムタクソノミーを含める場合、カスタマイズが必要です。 今回は、検索機能そのものをカスタマイズする方法ではなく、オリジナルで検索ページ(検索バー)と検索結果ページを作成する方法を紹介します。
まずはWordPressで検索バーをオリジナルで作成 ある固定ページにオリジナルの検索バーを設置し、ある固定ページで検索結果を表示します。 ここで検索バーを設置するページを「検索ページ」、検索結果を表示するページを「結果ページ」とします。
検索ページに検索バーを設置するコードは以下の通り。
<
form
method
=
"post"
action
=
"結果ページのURL"
>
<
input
type
=
"text"
name
=
"keyword"
placeholder
=
"キーワードを入力"
>
<
input
type
=
"submit"
value
=
"検索"
>
するとこんな感じの検索バーが表示されます。
これを受けて結果ページで検索結果を表示するコードは以下の通り。
$the_query
=
new
WP_Query(
$query
);
while
(
$the_query
->have_posts()):
<a href=
"<?php the_permalink(); ?>"
><?php the_title(); ?></a>
上記では検索キーワードを「タイトル」または「コンテンツ」に含む投稿が表示されます。 これはWordPressの通常の検索機能と同様の仕様ですのでわざわざオリジナルで作る必要はありません。
カスタムタクソノミーも対象とするキーワードのOR検索 本題はここからです。 投稿の「タイトル」「コンテンツ」のみでなく「カスタムタクソノミー」も検索対象に含める場合、下記のカスタマイズが必要です。 検索バーはそのまま。変更するのは結果ページの、検索機能の条件部分です。 (カスタムタクソノミーは例として「size」「color」とします。)
'terms'
=>
$_POST
[
"keyword"
],
'terms'
=>
$_POST
[
"keyword"
],
$the_query
=
new
WP_Query();
$the_query
->posts =
array_unique
(
array_merge
(
$q1
->posts,
$q2
->posts ), SORT_REGULAR );
$the_query
->post_count =
count
(
$the_query
->posts );
while
(
$the_query
->have_posts()):
<a href=
"<?php the_permalink(); ?>"
><?php the_title(); ?></a>
何をやっているかというと、通常の検索($q1)とカスタムタクソノミーの検索($q2)をそれぞれ別々に行い、結果を統合し一覧として表示しています。 そんなことしなくても検索用条件で両方指定すればいいじゃん!と思うかもしれませんがそれではうまくいきませんでした。
【悪い例】
's'
=>
$_POST
[
"keyword"
],
'terms'
=>
$_POST
[
"keyword"
],
'terms'
=>
$_POST
[
"keyword"
],
$the_query
=
new
WP_Query(
$query
);
この【悪い例】の方がすっきりしていてぱっと見いい感じなのですが、全然ダメダメです。 上記の方法ですと、検索キーワードが「タイトルまたはコンテンツに含まれ、さらに”size”または”color”に含まれる」投稿のみを表示します。 条件としては「((タイトル OR コンテンツ) AND (“size” OR “color”))」といった具合です。
おそらくこの記事を読んでいる皆様が実現したいのは、検索キーワードが「タイトルまたはコンテンツ、または”size”、”color”のいずれかに含まれる」投稿を表示。ではないでしょうか。 条件としては「(タイトル OR コンテンツ OR “size” OR “color”)」といった具合です。
上記カスタマイズでは、一つの検索バーで「タイトル、コンテンツ、”size”、”color”」を対象としたキーワード検索が実装可能です。
少々わかりにくいですが、他のやり方としてSQLを作成する方法等がありましたが、比較的上記の方がわかりやすいので今回ご紹介しました。
Webディレクター
26歳くらいで意気揚々とフリーターしていたが、ボチボチ周囲の目も気になってきたため、2013年にホームページ制作の個人事業主として独立。その後2017年、株式会社KOP を設立し、晴れて憧れの社長に。