ss2

WordPress 4.0では、空文字の検索に対する挙動が変わったようです。

そこで、変更点や対処の例をまとめました。

バージョン4.0=大幅なリニューアル、ではないようです

2014年9月5日に、WordPress 4.0がリリースされました。

3.9から4.0へのアップデートで、大きな変更があるのかと思いきや、3.8→3.9の時と同じようなアップデートに過ぎないようです。

そんなわけで、今まで使用していた自作のテーマファイルも、特にコードの見直しなどを求められる事なく、WordPress4.0でも問題無く動きました。

しかし、検索時の挙動が少し変わってしまったようです。

変更された、空文字の検索の挙動

例えば、検索ボックスに何も入れずに、検索ボタンをクリックしてみます。

ss1

すると、検索用のパラメータsに空文字が送られ、URLはこのようになります。

http://morilog.com/?s=

この場合、今までのWordPress(バージョン3.9まで)では、検索結果ページではなく、ホームページが表示されました。
また、条件分岐タグis_searchの戻り値はfalseでした。

いっぽう、WordPressのバージョン4.0では、検索結果ページが表示されるようになり、条件分岐タグis_searchの戻り値はtrueを返すようになりました。

挙動を今まで通りに戻すのは困難

ホームページでなく検索結果ページが表示されるようになったという仕様変更で、不都合が生じるケースはそれほど無いのではと思われます。

むしろ、検索機能を拡張して、カテゴリ検索機能などを実装した場合、sパラメータを空で送りつつ、(カテゴリなどの)検索結果を表示させたい場合もありますので、そういったケースを考えた仕様変更なのかと思います。

もし、挙動を今まで通りに戻したい場合、テーマの関数ファイル(functions.php)で対応できないかと思いましたが、完全に元の仕様に戻すのは困難なようです。(システムのソースファイルに手を加えれば簡単なのですが、決してお勧めできる解決法ではありません。)

空文字の検索はホームにリダイレクトする

それでは、ちょっと乱暴な気もしますが、空文字の検索はホーム(フロントページ)にリダイレクトさせてしまうのはどうでしょう。

この仕様にする場合、次のコードをテーマの関数ファイル(functions.php)に追加します。

これで、検索ボックスに何も入力しないで検索ボタンをクリックした場合、つまりは、

http://morilog.com/?s=

にアクセスした場合、

http://morilog.com/

にリダイレクトされるようになります。

スペースのみの検索もリダイレクトさせる

検索ボックスにスペースのみを入力して、検索ボタンをクリックした場合にも、ホーム(フロントページ)にリダイレクトするようにします。

テーマの関数ファイル(functions.php)に、前出のコードの代わりに、以下のコードを追加します。

WP Multibyte Patchプラグインを有効にしている場合(日本語サイトの場合、ほとんどのケースで有効にしていると思います)、全角スペースでも半角スペースの場合と同じくリダイレクトされるようになります。