is_search() の使い方|説明・引数・注意点

説明

is_search() は、検索結果ページを表示しているかを判定する関数です。

基本構文

is_search(): bool

引数

引数はありません。

戻り値

条件に当てはまれば true、そうでなければ false。

使い方(サンプル)

if ( is_search() ) {
	// 検索結果ページ
}

注意点

  • 検索キーワードは get_search_query() で取得します。

実務での使いどころ

  • 検索結果ページだけで、見出しや「該当なし」の表示を変えるとき。
  • 検索結果から、特定の投稿タイプを除外するとき(pre_get_posts の中で $query->is_search())。

よくあるミスと対処

  • pre_get_posts の中で、グローバルの is_search() を使っている。フック内では、$query->is_search() を使い、$query->is_main_query() の確認も併せて行う。
  • 検索結果が0件のとき、404になると思っている。0件でも検索結果ページで、404ではない。

NG例

add_action( 'pre_get_posts', function ( $query ) {
	if ( is_search() ) {
		$query->set( 'post_type', 'post' );
	}
} );

OK例

add_action( 'pre_get_posts', function ( $query ) {
	if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
		$query->set( 'post_type', 'post' );
	}
} );

使い分け早見表

やりたいこと 使うもの
検索結果ページか is_search()
404(見つからない)ページか is_404()
検索キーワードを取得 get_search_query()

関連項目

get_search_query()、is_404()

公式リファレンス:is_search() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました