説明
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() |
関連項目
公式リファレンス:is_search() | Function | WordPress Developer Resources

コメント