[WordPress] サイト内検索の空検索を検索結果0件として処理する
WP v4.0 以降、空検索の結果は固定ページ、投稿、メディアなど全件が返ってくるようになった。
投稿一覧ページに転送するとか、pre_get_posts フックで結果を制御するとか色々やれることはあるが、検索結果0件として処理する場合の一例。
/** 空検索の結果表示 */
function search_no_results() {
if ( isset( $_GET['s'] ) && preg_match( '/^[\s ]*$/', $_GET['s'] ) ) {
global $wp_query;
$wp_query->init(); // 取得内容をクリア
$wp_query->is_search = true; // 表示条件を検索結果ページにする
}
}
add_action( 'template_redirect', 'search_no_results');
検索キーワードが空または空白文字、全角スペースのみなら結果0件としている。
全角スペースを区切り文字にしたい場合
おすすめプラグイン:WP Multibyte Patch
既に template_redirect フックを利用している場合は中身だけ追加できるので簡単かな、と。