連載第158回
2019年11月4日
検索機能に不具合アリ:検索フォーム再リフォームその1

検索キーワード無しで不具合アリ

 前々前155回の『検索フォームを少しリフォーム』でようやく落ち着いたと思っていた自作テーマの検索機能。呑気に自己満足に浸っておりましたが、実は大きな欠陥が存在していたことを見落としていました。

「検索キーワード」を入力せずに空白のまま、何かしらの『カテゴリー』&『タグ』の掛け合わせ(絞り込み)でリターンキーを押すと、上図のようにヘッダー画像と<h1>見出しに表示不具合が起きるのです。※ちなみに、何かしらの『カテゴリー』のみ、あるいは何かしらの『タグ』のみをプルダウンメニューから選んで検索すると、「検索キーワード」を入力せずに空欄のままでも意図通りの動作をします。

そのページの属性がよく分からない

不具合を起している状態でそのページの要素を見てみましたが、カテゴリーにするのかタグにするのか、WordPress自体が混乱しているような感じです。上図ではカテゴリーを「VPS&WordPress引っ越しメモ」にして、タグを「CS-80」という組み合わせで絞り込み、検索キーワード無しでリターンキーを押した場合。URL欄を見てみると、

【http://www.flipflipflip.com/?cat=3&s=&tag=cs-80】

で返ってきているので、カテゴリー(3番)と、検索キーワード無しなので空欄を示す「s=」、そしてタグの「CS-80」はちゃんと認識しているようです。

試しにヘッダーの部分に設定してある条件分岐で、「&&」や「if〜else」 などを使い、そのページが「カテゴリーとタグの場合」等々の組み合わせをいろいろテストしてみたのですが、不具合は解消しませんでした。

get_queried_object() も調べてみた

では予め想定される条件分岐を仕込むのではなく、そのページが一体どの属性として現れているのか調べられないかと思い、ネットを徘徊していて【get_queried_object()】なる関数の存在を知りました。結果としては惨敗で、自分がその関数の使い方を正確に理解出来ていないことも要因ですが、そもそも「カテゴリー&空欄&タグ」の組み合わせで返ってくる検索結果がどの属性なのか推測するアテも全て外れ、自分が意図するところへ道筋を立てることが出来ませんでした。

何もかも打つ手が無くなった時に使う最後の一手「初心」

そこでしばらくボーーーッとしていたら、何となく天から舞い降りてきたものがあって、だいぶ昔に「search.php」を作り直した際に不要となり、撤去していた「category.php」をとりあえずsearch.phpを複製リネームし再度設置してみたところ、何とヘッダー画像が1つになり、<h1>からはみだしていたタイトル名も無くなりました。

ヘッダー画像はどう指定されているのかソースを見てみると「HEAD_ICON_.jpg」というように拡張子の前に挿入されるべきカテゴリーID番号が付与されていない状態になっていました。これはもう「カテゴリーとタグを指定し、検索キーワードが無い場合」はこのように出力される、という前提として考え、「HEAD_ICON_.jpg」というファイル名そのままの画像(海に浮かぶ船のモノクロの写真)を用意し、所定の場所にアップロードしてみました。すると、意図通りの表示結果が得られました。カテゴリー&検索キーワード空欄&タグの組み合わせで、下図のようになります。ひとまず、ヘッダー画像が2重に表示されてしまう不具合は解消。

ちなみに、検索時の絞り込みと、その結果には以下のようなルールが見られました。

1.検索キーワードのみ → 全投稿横断検索による【search.php】での結果表示
2.カテゴリーのみ → そのカテゴリーの【category.php】での一覧表示
3.カテゴリー&検索キーワード → カテゴリー内での検索キーワード該当記事を【search.php】で一覧表示
4.カテゴリー&タグのみ(検索キーワード無し) → 指定したカテゴリー内で該当するタグの投稿を【category.php】で一覧表示
5.タグのみ → 汎用の【index.php】で該当タグの一覧表示
6.検索キーワード&タグのみ → 検索キーワードとタグの掛け合わせ結果を【search.php】で一覧表示

個人的な印象としは「検索キーワード」の在る無しが最強要素で、その入力があれば有無を言わさずsearch.phpが使用されます。2番目に強いのがカテゴリー。今回、不具合が生じたのは4番目の「カテゴリー&タグのみ(検索キーワード無し)」の組み合わせの場合で、その条件下では【category.php】がテーマ内に無いと表示に乱れが生じるようです。あくまで自分の構成した拙いテーマの場合ですが。

次回は、検索結果のタイトル表示を少し修正してみます。